日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一、 promise

發布時間:2024/4/17 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一、 promise 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、 ? promise 1、如何讓異步操作有順序的執行? 方法1:嵌套 ajax1(ajax2(ajax3(...))) 方法2:異步改成同步 open(“GET/POST”,url,false) 缺點:如果后臺出現問題,一直忙,不能返回數據,瀏覽器將出現卡死的情況。 方法3:promise new Promise(ajax1).then(ajax2).catch() 優點:使用了鏈式調用代替了嵌套結構。 2、promise寫法 使用promise的寫法如下: 1.方法1 new Promise(function(resolve,reject){ ajax1({ url:”xxxx”, success:function(data){ resolve(); ?//成功回調的執行。 }, error:function(msg){ reject();?????//失敗回調的執行 } }); }).then(function(){ ajax2({ url:”xxxx”, success:function(data){ } }); }).catch(function(){ console.log(“請求出現錯誤:”,msg); }); 2.方法2 new Promise(ajax1).then( function(){return new Promise(ajax2)} ).then(ajax3); 3.方法3 new Promise( ajax1 ).then( function(){ return new Promise(ajax2) } ), then( function(){ return new Promise(ajax3) } ), then( ajax4 ); 4.promise.all 和 promise.race new Promise(function(resolve,reject){?? //p1 ajax1({ …… resolve() }); }).then(function(){ return new Promise(resolve,reject){? //p2 ajax2({ …… resolve(); }); } }).then(function(){ return new Promise(resolve,reject){? //p3 ajax3({ …… resovle() }); } }) (1)如果有三個ajax請求,調用順序無關,但必須保證三個都成功,才能開始第四個? Promise.all(function(){? //p123 return [p1,p2,p3]; }).then(function(){ return p4; }); (2)如果有三個ajax請求,只要任意一個成功,則開始第四個? Promise.race(function(){ return [p1,p2,p3]; }).then(function(){ return p4; }); - 擴展案例
var val = 1; // 我們假設step1, step2, step3都是ajax調用后端或者是在Node.js上查詢數據庫的異步操作 // 每個步驟都有對應的失敗和成功處理回調 // 需求是這樣,step1、step2、step3必須按順序執行 function step1(resolve, reject) { console.log('步驟一:執行'); if (val >= 1) { resolve('Hello I am No.1'); } else if (val === 0) { reject(val); } } function step2(resolve, reject) { console.log('步驟二:執行'); if (val === 1) { resolve('Hello I am No.2'); } else if (val === 0) { reject(val); } } function step3(resolve, reject) { console.log('步驟三:執行'); if (val === 1) { resolve('Hello I am No.3'); } else if (val === 0) { reject(val); } } new Promise(step1).then(function(val){ console.log(val); return new Promise(step2); }).then(function(val){ console.log(val); return new Promise(step3); }).then(function(val){ console.log(val); return val; }).then(function(val){ console.log(val); return val; }); // 執行之后將會打印 步驟一:執行 Hello I am No.1 步驟二:執行 Hello I am No.2 步驟三:執行 Hello I am No.3 Hello I am No.3

轉載于:https://www.cnblogs.com/wangjizhi/p/6722838.html

總結

以上是生活随笔為你收集整理的一、 promise的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。