2017-08-24 17 views
0

機能内に非同期awaitを隠す方法を知っている人はいますか?非同期待機を隠す


私は不明であったように編集しています。 asyncFunction:非同期機能私は何をしたいのか

はメイン外側の関数は非同期コードのように見えないように、関数内のawaitをラップすることです。 hideAsync:メインコードから "await"キーワードを追加する必要がなくなるラッパー関数。 run:線形関数のように見えるメインコード。この時間を期待して

自分自身を明らかにした: -/

var someSome = {}; 
 

 
someSome.wait = ms => new Promise(resolve => setTimeout(resolve, ms)); 
 

 
someSome.asyncFunction = async (el) => { 
 
    await someSome.wait(1000); 
 
    alert("step 1"); 
 
} 
 

 
someSome.hideAsync = async function(){ 
 
    await someSome.asyncFunction(); 
 
    alert("step 2"); 
 
} 
 

 
someSome.run = async function(){ 
 
    someSome.hideAsync(); 
 
    alert("step 3"); 
 
} 
 
someSome.run();

+1

あなたは何を期待していたのでしょうか? 'SomeSome.hideAsync();の' await'を見逃しました。それは意図的ですか? – Keith

答えて

0

私はあなたが求めているものを理解していれば、あなたはそれをせずに関数呼び出しで非同期操作を行うことが可能かどうかを知りたいですその前にawaitというキーワードを使用して、を呼び出し、その呼び出しが完了するまで待ってから、次の行に移動します。

答えはノーで、非同期操作はどちらか.then()ようawaitまたはその他の手段を通じて、を明示的に処理する必要はありません。 awaitまたは.then()を使わずに非同期関数を呼び出すことはできますが、実行はではなく、が完了するのを待って、すぐ次の行に進みます。

JavaScriptでは常に非同期操作を理解することが非常に重要です。それらは無視できず、同期関数のように扱われます。 awaitを使用すると、あなたが得ることができる限りお近くであり、多くはがコールバックhellまたは.then()であったよりもきれいです。