async/await非同期タスクを処理するための最良のアプローチを提供し、コードをよりクリーンで読みやすいものにする ES7 機能 の使用を開始しました。
ただし、非同期関数によって作成された Promise へのアクセスは提供されないため、非同期関数で非同期要求を行う場合は、それを約束し、それを待ってから結果を返す必要があります。私はこれを意味します:
async function doStuff() {
//stuff...
var value = await new Promise(function(resolve) {
$.get('http://some/url/...', function(result) {
// stuff...
resolve(result);
});
});
return value;
}
関数によって作成された 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);
});
}
このようにして、Promises API に直接アクセスする必要がないため、コードはタスクに完全に集中することができます。