2015-06-06 105 views
0

我對JavaScript中的承諾還很陌生,我仍試圖找出將JavaScript中的承諾鏈接在一起的最佳方法,例如,嵌套承諾封裝通用流

something().then(function(result){ 
    console.log(result); 
}) 

function something(){ 
    return another().then(function(result){ 
    return "message"; 
    }) 
} 

如果有什麼()和其他()都返回承諾,將在另一個()和其當時()的執行console.log()語句之前被調用,即他們將加入承諾的outter鏈或外鏈是否會完成,因爲它已經成功創建了內鏈?

我們的實際鏈往往更長和更平坦,但我想封裝一些重複的代碼,例如,我們做了大量的HTTP調用,它們返回承諾,我們希望在繼續鏈之前執行一些常見的驗證,但我們不想在每一個環節重複這個第二步。

回答

0

內在的承諾將被束縛在外在的諾言中,外在的諾言不會被滿足,直到內在的諾言也被實現。

.then()處理程序返回一個承諾自動鏈接到該承諾鏈,外部的將不會解決,直到內部的一個也解決。這是承諾的超級重要和有用的能力。

工作演示:http://jsfiddle.net/jfriend00/L6u2sw73/

+0

@analogueboy - 我加了工作演示。 – jfriend00