私は非同期タスクを処理する最良の方法を提供するES7機能async/await
を使い始めました。返信キーワードなしで非同期関数を解決することは可能ですか
ただし、非同期関数で作成されたPromiseへのアクセスはありません。したがって、非同期関数で非同期要求を行う場合は、それを約束してから待ってから結果を返してください。でも
async function doStuff() {
//stuff...
var p = arguments.callee.promise;
$.get('http://some/url/...', function(result) {
// stuff...
p.resolve(result);
});
}
か::
async function doStuff() {
//stuff...
$.get('http://some/url/...', function(result) {
// stuff...
async.resolve(result);
});
}
この方法では、関数によって作成された約束へのポインタを見つけることができれば何
async function doStuff() {
//stuff...
var value = await new Promise(function(resolve) {
$.get('http://some/url/...', function(result) {
// stuff...
resolve(result);
});
});
return value;
}
はので、あなたのコードは次のようになります。私はこのことを意味しますPromises APIに直接アクセスする必要はありません。なぜなら、あなたのコードはタスクに完全に焦点を当てています。
私はあなたが 'async' /' await'のポイントを見逃していると思っています。単純に 'result = await $ .get(someUrl);を実行するシナリオを作成できますか? doStuffWith(result) 'で十分ではありませんか?提案の全体のポイントは、コールバックを処理する必要はありません。 – Amadan
私はあなたがすでに約束しているのであれば、なぜ別のものを作成する必要があるのかと思っただけです。下のBergiは明確に答えました - いいえ=) – rokstar