2017-03-28 12 views
0

私はNode.jsプログラマーです。 Node.js 7.6がリリースされる前に、モジュール 'asyncawait'を使用して、自分のコードを非同期待ちスタイルにしました。Node.js 7.6+で非同期なしでビルトイン待機を使用する方法はありますか?

のNode.js 7.6がリリースされた後、非同期待つ機能が正式にされ
var async = require('asyncawait/async'); 
var await = require('asyncawait/await'); 

var getData = async(function(finder){ 
    return await(db.collection.findOne(finder)); 
}); 

var f = function(finder){ 
    return await(getData(finder)); 
}; 

try{ 
    let result = f({id: 1}); 
}catch(err){ 
} 

ビルトイン:コーディングスタイルは、以下のようなものです。しかし、非同期関数と待機関数(またはそれらをキーワードと呼んでいますか?)は、一見関数内でペアにする必要があります。コードを変更すると、

var getData = async function(finder){ 
    return await db.collection.findOne(finder); 
} 

var f = function(finder){ 
    return await getData(finder); 
}; 

try{ 
    let result = f({id: 1}); 
}catch(err){ 
} 

'f'関数の 'await'キーワードが認識されません。コードを変更しない限り、

var getData = async function(finder){ 
    return await db.collection.findOne(finder); 
} 

var f = async function(finder){ 
    return await getData(finder); 
}; 

try{ 
    let result = await f({id: 1}); 
}catch(err){ 
} 

コードが面倒です。関数内で非同期なしでビルトイン待機を使用する方法はありますか?

+0

約束があるため厥。本質的にコールバックと非同期を約束するように待っているので、同期コードと非同期コードを簡単に切り替えることができます。 – GottZ

答えて

4

Awaitは非同期関数内でのみ使用できます。

ザ・プロミスの解決のために を待つために、その値が解決されたとき、非同期機能 実行を再開するために、式は一時停止し、非同期機能を実行させる待ちます。解決された の値を返します。値がPromiseでない場合、解決された Promiseに変換されます。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await

関連する問題