Я использую библиотеку Q, которая хорошо поддерживает спецификацию Promise. Но я также пытаюсь использовать класс Promise, который был недавно реализован в Chrome (экспериментально).
Существует функция отсрочки в Q, которая может быть использована для создания невыполненного обещания, которое может быть разрешено или отклонено в будущем.
Я реализовал ту же функциональность, используя собственную Promise, представленную в Chrome. Вот пример:
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);
Мне любопытно, есть ли какой-либо недостаток дизайна в этом решении, например, замедление производительности или некорректность.