Есть ли хороший шаблон дизайна для использования обещаний, в то же время поддерживающий цепочку? Например, допустим, что у нас есть что-то вроде:Сочетание обещаний и цепочки
function Foobar() {
this.foo = function() {
console.log('foo');
return this;
};
this.bar = function() {
console.log('bar');
return this;
};
}
var foobar = new Foobar();
foobar.foo().bar();
Если вместо этого мы изменяем методы использовать обещание, например,
function Foobar() {
this.foo = function() {
var self = this;
return new Promise(function (resolve, reject) {
console.log('foo');
resolve(self);
});
};
...
}
Есть хороший способ сделать что-то вроде:
var foobar = new Foobar();
foobar.foo().bar().then(function() {
// do something
});
Вы ищете 'Promise.all'? – elclanrs
Вы не можете вернуть оба 'this' для цепочки и возвратить обещание, если вы не сделаете свой собственный объект в обещании (который имеет некоторые виды использования, но обычно это не хороший подход). Таким образом, вы обычно выбираете тот или иной способ возврата для определенного метода. Методы, которые запускают асинхронную операцию и, таким образом, создают обещание, вернут обещание. Другие методы, у которых не было другого возвращаемого значения, вернули бы «это» для цепочки. – jfriend00