2016-02-29 63 views
0

我一直在重構一些使用IIFE來獲取和啓動一組值的舊代碼。是否有可能將承諾的結果作爲參數傳遞給IIFE

var exampleInitiate = (function exampleInitiate(){ 
    ..call some backend service 
})(); 

現在,按照新的要求,我必須調用同一IIFE與參數,這種說法其實是它本身是很久以後調用的承諾的結果。我明白,IIFE立即被調用,即使我得到承諾的結果,我是否可以再次致電IIFE?我理解IIFE只能運行一次。

我認爲最好不要在這裏使用IIFE,因爲它不適合這裏的情況。這是正確的嗎?還是確實有辦法通過一個承諾來傳遞參數價值的IIFE?

+0

爲什麼不通過承諾本身,而不是承諾的價值?由於承諾尚未被調用,因此它沒有價值,但是您可以輕鬆將承諾傳遞給IIFE,然後在解決問題時使用它的價值。 – Paulpro

回答

0

如果我理解你正確,你可以有幾個選項。首先,你可以通過這樣的參數傳遞給IIFE:

var myPromise = getPromise(); 

var exampleInitiate = (function exampleInitiate(promise){ 
    promise.then(function() { ... }); 
    ..call some backend service 
})(myPromise); 

但是我不會這樣說清楚。我建議擦除IIFE和使用的承諾,你通常會做:

getSomeBackEndResponse().then(function (data) { ... }) 

編輯:如果你IIFE回報承諾本身然後是,我認爲你可以在功能本身的結果再次不及格,因爲IIFE被調用一次。重新思考這段代碼的邏輯。

相關問題