2017-01-09 22 views
0

我有了我的數據庫集成的功能,但在此之前,我有一個功能,做一些檢查:怎麼看asynchronity沒有回調節點

function checkVars (a, b){ 
    if (a.a1 !== b.b1){ 
      b.b1 = a.a1; 
    } 
    // and other 4 vars 
} 

這之後,我有一個函數插入數據進入我的數據庫。

如何確保我的代碼將在數據庫函數之前執行比較函數?

我正在使用回調,但這可能沒有回調?

+0

只需先調用你的'checkVars()'。它不會執行任何異步操作,所以應該沒有問題。 – nnnnnn

+0

你爲什麼不嘗試一下?此外,你想刪除哪個回調?我的例子中沒有看到一個。 – moffeltje

回答

3

我該如何確定我的代碼要執行比較函數?

假設你有:

checkVars(something, somethingElse); 
doDatabaseWork(); 

...你知道checkVars將被調用,將運行完doDatabaseWork被調用之前。由於checkVars同步執行所有工作(它不啓動任何異步進程),因此在doDatabaseWork之前運行完成的事實意味着所有工作都在doDatabaseWork之前完成。只有當checkVars啓動一個異步進程時,當checkVars返回(並通過回調,直接或通過承諾處理它)時,您需要允許該進程尚未完成。但是你所描述的並不是在checkVars中啓動一個異步過程,所以沒有什麼可以允許的。