亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在鏈接兩個異步jQuery函數時完全避開jQuery promises?

如何在鏈接兩個異步jQuery函數時完全避開jQuery promises?

慕容3067478 2019-07-31 10:43:24
如何在鏈接兩個異步jQuery函數時完全避開jQuery promises?我見過很多關于新EMCA承諾的教程,主張避免jQuery庫中的“promises”。他們通常說你可以通過做這樣的事情來躲避他們:Promise.resolve($.getJSON(url, params)); // voila!  the jQuery promise is "gone"!但是,當我必須將兩個異步jQuery函數鏈接在一起時,這并不真正起作用。如何在不使用jQuery的then()或.when()的情況下將兩個getJSON調用(第二個調用依賴于第一個調用)鏈接在一起?相反,我只想使用Promise.all等。我認為一個類似的問題問題是交叉jquery和EMCA的承諾?
查看完整描述

2 回答

?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

JavaScript承諾是可互操作的。您可以根據需要混合使用它們,所有適當的庫1和本機承諾都可以接受來自任何地方3的任何實現的thenables 2。如果有外國人出現,他們就會做。Promise.resolve

所以通常你會編寫你的代碼,好像它們都使用了相同的promise實現,它只是起作用
但是,現在您要確保所有.then方法調用都使用您喜歡的實現; 或者您想使用非標準方法或功能?對于這一點,你必須明確地投下所有的承諾在其上直接調用方法 -而不是其他。

一些例子:

Promise.all([$.ajax(…), $.ajax(…)]).then(…); // just works!
$.ajax(…) // a jQuery promise.then(…)  // so this would be jQuery `then`, which we don't want.
Promise.resolve($.ajax(…)) // explicit cast.then(function(data) {     // native `then`
    return $.ajax(…);      //   just works!})                         // returns a native promise still.catch(…)                  // so we can use its features

1:是的,jQuery是直到3.0版本其中一個
2:所有的jQuery deferreds和承諾是這樣thenables,雖然
3:真的無處不在你所期望的一個承諾,在Promise.resolve,then回調的返回值,Promise.all參數,...


查看完整回答
反對 回復 2019-07-31
  • 2 回答
  • 0 關注
  • 491 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號