2017-06-15 13 views
0

私はasynで開始されたjsutを待ち、すべてのコールバック構文をawync/awaitスタイルに変換しようとしています。モジュール化されたコードでAPIを呼び出すために、すべての関数をasyncキーワードで呼び出す必要がある理由

私が理解できなかったことは、いつも非同期キーワードで自分の関数に接頭辞を付ける必要があることです。ここ

は一例であり:

APIQuery.js

makeRequest: async(options) => { 
try { 
    var response = await(request(options1)) 
} 
catch(err){ 
    console.log("Some error occured"); 
    response = undefined; 
} 
return response; 
} 

MobileAPI.js

getMobileData: async modal => { 
var options = {method: 'GET', json: true,uri: 'https://example.com/mobile/'+modal} 
var response = await APIQuery.makeRequest(options); 
} 

MobileService.js

getMobileDataService: async modal => { 
var response = await MobileAPI.getMobileData(modal); 
} 

MobileController.js

もう一度私は応答を返すために非同期と組み合わせを待たなければなりません。

私の質問は、これをどこからでも取り除く方法があるということです。 APIQuery.js内で非同期呼び出しが十分ではありませんか?

+0

非同期/待機は、少ないコードを書くための単なる構文です。あなたが非同期を置かないなら、待機中のキーでエラーを介して何が行われるのかをlinter/compilerに指定します。 – Nicholas

答えて

1

あなたがawait演算子を使用する場合は、関数の宣言の前にasyncキーワードを使用する必要があります。

のawait演算子は約束を待つために使用されています。これは、非同期関数内でのみ使用できます。

あなたはどこにでもasyncを使用したくない場合は、コールバックや約束(thencatch、など)を使用し続けることができます。

0

私の質問は、これをどこからでも取り除く方法があるということです。

ブロックできません。期間。ブロックすると、サーバーはブロックされなくなるまで、すべてリクエストに完全に反応しなくなります。このため、コードでなければなりません。

コールバックは完全に有効な非同期形式ですが、async/awaitは使いやすく、理解しやすく、管理しやすくなります。

関連する問題