2017-04-22 3 views
0

機能を返すとPromise.all

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: [ [Function] ]を取得します。

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

'決意が( 'ここでの値です:'、データ)'決意を一つだけ引数を取るが、もう一つは無視されます。 – Thomas

+1

そして、なぜあなたはその行動を期待していますか?あなたが使用した名前で言えば、プロミスではなく、関数を扱っていることに気付いています。それでは、どうやってこの期待をしていますか? – Thomas

答えて

1

getMyFunctionあなたが約束を得るためにmyFunctionを呼び出す必要があるので、約束を返す機能を返します。それはそれを呼ぶものではありません。 Promise.allは約束を予期しています。約束を得るには、その関数を呼び出さなければなりません。

Promise.allの性質は、物事は並行して実行されているので、実際にはgetMyPromiseであり、実際には約束を返すようにしたいと考えています。それ以外の場合は、Promise.allにノーポイントがまったく):

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); 
 
});

+0

私は矢印関数を返すOPを追加したいと思います。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions。 –

+2

@ RaunakMukhiaこの場合、どのような違いがありますか? – charlietfl

+0

@charlietfl OPの疑念を解消するために、()=> {}が実際に矢印の関数であることを明確にすることを意味します。 –

1

getMyFunctionは、名前が示唆するものを行います:それはあなたの機能を取得

関連する問題