将数组发送到promise链

时间:2015-08-20 19:28:03

标签: javascript node.js

我尝试使用相同的函数来检查promise链中的值数组。

/*This works*/
dc.checkIfDateIsAfter(departure_date,return_date)
.then(console.log)
.then(dc.checkIfDateIsValid.bind(null,departure_date))
.then(console.log)
.then(rp.bind(null, options))
.then(console.log)
.catch(console.log);

/*This doesn't work*/
dc.checkIfDateIsAfter(departure_date,return_date)
.then(console.log)
.then(Promise.all([dc.checkIfDateIsValid.bind(null,departure_date)])
.then(console.log) // undefined
.then(rp.bind(null, options))
.then(console.log)
.catch(console.log);

如何在不重写函数的情况下完成此操作?

1 个答案:

答案 0 :(得分:1)

Promise.all期待一系列承诺。你在第二次尝试中已经完成了这一点,但是,然后,我希望一个函数返回一个promise。 Promise.all()计算一个promise,而不是一个返回一个promise的函数,所以你必须像这样重写它:

.then(function () {
    return Promise.all([dc.checkIfDateIsValid.bind(null,departure_date)]);
})