一尘不染

javascript承诺不传递所有参数(使用Q)

node.js

我无法通过所有论点。我的诺言回调仅收到一个,而不是三个:

var asyncFunction= function(resolve) {
    setTimeout(function() {
        resolve("Some string that is passed", "and another", "third");
    }, 1000);
};

var promiseFunction = function () {
    var deferred = Q.defer();

    asyncFunction(deferred.resolve);

    return deferred.promise;
};

promiseFunction().then(function() {
    // Only one argument is passed here instead of 3
    // { '0': 'Some string that is passed' }
    console.log(arguments); 
});

知道我在做什么错吗?


阅读 238

收藏
2020-07-07

共1个答案

一尘不染

Q的Promise resolve只能有一个参数-
Promise代表一个单一的值,而不是它们的集合。如果需要多个值,则将它们显式放入数组中。对于多参数回调,您可以使用.spread()

2020-07-07