then
не принимает Promise
в качестве входного сигнала, он принимает 2 функции, 1 для выполнения и 1 для отказа.
Причина d
решается это связано с тем, что вызов .then с не вызываемым значения (даже номер буквальным - 1, или undefined
) вызывает onFulfilled функцию, которая будет заменить «Идентичность», который просто повторно -fulfills с любым значением, которое было разрешено на предыдущем шаге. См PerformPromiseThen
Попробуйте так:
//promises that are never resolved nor rejected
var a = function() { return new Promise(function(r,re){}); };
var b = function() { return new Promise(function(r,re){}); };
var c = function() { return new Promise(function(r,re){}); };
// or simply, a = b = c after setting the function for c
var d = [a, b, c].reduce(function (previousPromise, fn) {
return previousPromise.then(fn, /* not passing a rejection handler... */);
}, Promise.resolve());
или в качестве альтернативы ...
//promises that are never resolved nor rejected
var a = new Promise(function(r,re){});
var b = new Promise(function(r,re){});
var c = new Promise(function(r,re){});
var d = [a, b, c].reduce(function (previousPromise, promise) {
return previousPromise.then(function() {return promise;});
}, Promise.resolve());
И так как вы используете обещания & ES6, вы могли бы быть более кратким:
let a = new Promise(() => {});
let b = new Promise(() => {});
let c = new Promise(() => {});
let d = [a, b, c].reduce((previousPromise, promise) =>
previousPromise.then(() => promise),
Promise.resolve());
Как получилось 'Promise.resolve(). Then (new Promise (function (r, re) {}))' разрешает ожидающее обещание? – CodingIntrigue
@RGraham это действительно не –
@JaromandaX Возможно, я регистрирую это неправильно. http://i.imgur.com/jEkWokl.png – CodingIntrigue