JavaScript Promise/Defer in Chrome
google-chrome, javascript, promise, q
Solution
You are creating unnecessary function objects.
You can just do:
var defer = function() {
var result = {};
result.promise = new Promise(function(resolve, reject) {
result.resolve = resolve;
result.reject = reject;
});
return result;
};
Design flaw is doing this in the first place, native promises are useless if you are using Q.
Problem
I use the Q library that supports the Promise specification well. But I also try to use the Promise class that has been implemented in Chrome not long ago (experimentally). There's the defer function in Q that can be used for creating a non-fulfilled promise that can be resolved or rejected in the future. I've implemented the same functionality using the native Promise presented in Chrome. Here's an example: ``` var defer = function() { var result = {}; result.promise = new Promise(function(resolve, reject) { result.resolve = function(value) { resolve(value); }; result.reject = function(value) { reject(value); }; }); return result; }; var deferred = defer(); deferred.promise.then(function(value) { alert(value); }); deferred.resolve(10); ``` I'm curious is there any design flaw in this solution such as performance slowdown or incorrectness.