亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

javascript - Promise 封裝ajax想順序執(zhí)行ajax,但是發(fā)現(xiàn)并沒有按照順序執(zhí)行,高手指點

瀏覽:71日期:2023-09-08 11:16:07

問題描述

javascript - Promise 封裝ajax想順序執(zhí)行ajax,但是發(fā)現(xiàn)并沒有按照順序執(zhí)行,高手指點

代碼如下:

function $myAjax(url, method, data, callback) {let p = new Promise(function(resolve, reject) { $Ajax.request({url: url,method: method,data: data,success: function(resp) { callback(resp); resolve();},failure: function(xhr) { //todo reject();} });});return p; } let $docs = document; $docs.getElementById(’xxx’).onclick = function() {$myAjax(’https://mhd.uzai.com/api/CommonActive/GetPrizeGivingByUserid’, ’get’, { ’memberid’: 1920740, ’activeid’: 1 }, function(resp) { console.log(resp); console.log(1);}).then($myAjax(’https://mhd.uzai.com/api/CommonActive/GetPrizeGivingByUserid’, ’get’, { ’memberid’: 1920740, ’activeid’: 1 }, function(resp) { console.log(resp); console.log(2);})); };`

也就是說有時候會先打印出來2,后打印出來1;

想要執(zhí)行的順序是:1,2

請高手指點!

問題解答

回答1:

額, 你這個寫錯了,正確寫法如下

$docs.getElementById(’xxx’).onclick = function() { $myAjax(’https://mhd.uzai.com/api/CommonActive/GetPrizeGivingByUserid’, ’get’, { ’memberid’: 1920740, ’activeid’: 1 }, function(resp) {console.log(resp);console.log(1); }).then(function() {$myAjax(’https://mhd.uzai.com/api/CommonActive/GetPrizeGivingByUserid’, ’get’, { ’memberid’: 1920740, ’activeid’: 1 }, function(resp) { console.log(resp); console.log(2);}) });};`回答2:

$docs.getElementById(’xxx’).onclick = async function() {let resp1 = await $myAjax(’https://mhd.uzai.com/api/CommonActive/GetPrizeGivingByUserid’)let resp2 = await $myAjax(’https://mhd.uzai.com/api/CommonActive/GetPrizeGivingByUserid’)}回答3:

你這寫法,就是說沒有調(diào)用reject函數(shù),在成功觸發(fā)后,你的resp輸出的是什么?

回答4:

你需要用數(shù)組來保證隊列,用reduce來保證返回值的疊加操作。然后自己實現(xiàn)promise

回答5:

推薦用終極方案 async。

回答6:

首先,你要理解一點,Promise不需要傳callback,Promise就是為了不傳callback回調(diào)的。先看下Promise語法吧。

var promise=new Promise(function(resolve,reject){ //這里面執(zhí)行異步操作, //參數(shù)說明:resolve,reject都是function,異步成功了,執(zhí)行resolve,失敗了執(zhí)行reject //此處使用setTimeout模擬一個ajax setTimeout(function () {resolve(testData); }, 1000);})promise.then(function success(){//執(zhí)行resolve就等于初始執(zhí)行這個函數(shù)},function error(){//執(zhí)行reject就等于初始執(zhí)行這個函數(shù)});//多個then//promise.then....

建議看看阮一峰寫的教程:Promise

回答7:

所有 promise 中的then 都是按順序調(diào)度立即執(zhí)行,這些 then 中任意一個都無法影響或延誤對其他的調(diào)用。也就是你的第二個 ajax 是不會等第一個 ajax 請求晚再執(zhí)行。 解決辦法

//ajax 的promise 封裝var ajax1 = new Promise((resolve,reject) => {// request})var ajax2 = new Promise((resolve,reject) => {// request})//調(diào)用ajax1() .then(() => return ajax2()) ....回答8:

請貼出你的代碼,而不是截圖,這是提問的一個小技巧哦,圖片不怎么清晰。

標簽: JavaScript
主站蜘蛛池模板: 国产日韩欧美亚洲综合 | 中文字幕久久久久 | 免费区欧美一级毛片 | 亚洲自偷自拍另类12p | 亚洲国产精品国产自在在线 | 黄色在线视频在线观看 | 久久精品94精品久久精品动漫 | 日本乱人伦毛片 | 朴妮唛禁福利视频在线 | 午夜综合| 国产一区二区三区在线免费 | 国产精品视频一区二区噜噜 | 一级高清毛片免费a级高清毛片 | 国产情侣真实露脸在线最新 | 国产另类在线观看 | 亚洲精品高清国产一久久 | 国产日韩第一页 | 亚洲国产剧情 | 亚洲高清视频在线观看 | 久久国产资源 | 国产亚洲精品成人一区看片 | 国产香蕉98碰碰久久人人 | 亚洲高清国产一线久久 | 欧美黄色网址大全 | 欧美三级短视频 | 久久草草 | 99久久99这里只有免费的精品 | 精品国产香蕉伊思人在线 | 亚洲欧美精品中文字幕 | 美女扒开胸罩露出奶了无遮挡免费 | 九九热线 | 好大好爽国产美女h福利视频 | 国产精品黄在线观看免费软件 | 欧美一级视频在线观看 | 青青青爽国产在线视频 | 国产一级特黄aa大片爽爽 | 国产精品视频福利一区二区 | 中文在线日韩 | 国产精品密蕾丝视频 | 国产在线高清视频 | 91拍拍在线观看 |