返回函数并使用Promise.all调用

时间:2017-04-22 16:53:43

标签: javascript

function getMyFunction(data) {
    return () => new Promise((resolve, reject) => {
        resolve('here is the value:', data);
    });
}

const myFunction = getMyFunction('a');
Promise.all([
    myFunction,
]).then((result) => {
    console.log('result: ', result);
});

我期待result: here is the value: a,但我得到result: [ [Function] ]

2 个答案:

答案 0 :(得分:1)

getMyFunction会返回一个返回承诺的函数,因此您需要调用myFunction来获取承诺:

const myFunction = getMyFunction('a');
Promise.all([
    myFunction(), // <-- note here
]).then((result) => {
    console.log('result: ', result);
});

答案 1 :(得分:1)

getMyFunction符合名称的意思:它会为您提供功能。它没有调用它。 Promise.all期待一个承诺。您必须调用该函数才能获得承诺。

你可能希望它是getMyPromise并让它实际返回promise,而不是一个函数,因为Promise.all的本质是事物并行运行(我假设你&# 39; ll有一个函数;否则,根本没有指向Promise.all

&#13;
&#13;
function getMyPromise(data) {
    return new Promise((resolve, reject) => {
        resolve('here is the value: ' + data);
    });
}

Promise.all([
    getMyPromise('a'),
    getMyPromise('b'),
    getMyPromise('c')
]).then((result) => {
    console.log('result: ', result);
});
&#13;
&#13;
&#13;