2017-08-24 122 views
0

有沒有人知道如何隱藏功能內的異步await隱藏異步等待


編輯,因爲它似乎我不清楚。

我想要做的是包裝一個函數內部的await,所以主要的外部函數不會像一個異步代碼: asyncFunction:一個異步函數。 hideAsync:一個包裝函數,它將刪除從主代碼中添加「await」關鍵字的需要。 運行:看起來像線性函數的主代碼。

希望這一次自己清楚: -/

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();'這是故意的? – Keith

回答

0

如果我理解你的要求,你想知道是否有可能做一個函數調用的異步操作,而不在它前面使用await關鍵字,並且仍然等到該呼叫完成後才轉到下一行

答案是否定的,需要顯式地處理,無論是通過await或類似.then()其他方式異步操作。你絕對可以調用異步函數而不需要await.then(),但執行的時候不是等待操作完成,它會立即繼續下一行。

瞭解異步操作對於JavaScript來說非常重要,因爲它們始終存在。它們不能被忽略,並被視爲同步功能。使用await是儘可能接近你可以得到,並且是很多比它曾經與回撥地獄或.then()更清潔。