如何将参数传递给函数作为then()在Promise链中的参数,并保留先前的解析值?

时间:2016-09-22 17:52:44

标签: javascript es6-promise

我在节点v5.7.1中运行JavaScript。我试图找到一种聪明的方法将参数传递给函数作为then()的参数,而前一个解析的值仍然保持不会相互干扰。

var p = new Promise(function (resolve) {
    resolve('world!');
});

function logger (prefix) {
    return function (resolvedValue) {
        console.log(prefix + resolvedValue);
    }
}

p.then(logger('Hello '));

到目前为止,这是我能想到的。我的目标是让promise p做一些需要一些时间的事情,比如数据库操作。之后,p返回已解析的值,我想将它以及其他参数作为then()的参数传递给回调。

但我需要编写一个函数,它会一次又一次地返回另一个函数以达到我的目标。有没有其他聪明的方法来做到这一点?在这种情况下,展开/休息运算符...是否有帮助?

2 个答案:

答案 0 :(得分:2)

关闭完全没问题。您还可以使用函数表达式:

function logger (prefix, resolvedValue) {
    console.log(prefix + resolvedValue);
}

p.then(x => logger('Hello ', x));

甚至数组和解构:

function logger ([prefix, resolvedValue]) {
    console.log(prefix + resolvedValue);
}

Promise.all(['Hello', p]).then(logger);

答案 1 :(得分:0)

你可以试试这个

var p = new Promise(function (resolve) {
    resolve('world!');
});

function logger (prefix,resolvedValue) {
        console.log(prefix + resolvedValue);
}

p.then(function (resolvedValue){
logger('Hello ',resolvedValue)
});