av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

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

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

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

問(wèn)題描述

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

代碼如下:

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);})); };`

也就是說(shuō)有時(shí)候會(huì)先打印出來(lái)2,后打印出來(lái)1;

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

請(qǐng)高手指點(diǎn)!

問(wèn)題解答

回答1:

額, 你這個(gè)寫(xiě)錯(cuò)了,正確寫(xiě)法如下

$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:

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

回答4:

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

回答5:

推薦用終極方案 async。

回答6:

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

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

建議看看阮一峰寫(xiě)的教程:Promise

回答7:

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

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

請(qǐng)貼出你的代碼,而不是截圖,這是提問(wèn)的一個(gè)小技巧哦,圖片不怎么清晰。

標(biāo)簽: JavaScript
主站蜘蛛池模板: 国产精品久久一区 | 精品国产免费人成在线观看 | 成人乱人乱一区二区三区软件 | 久久久中文 | 亚洲va欧美va天堂v国产综合 | 欧美男人天堂 | 国产激情一区二区三区 | 久久久久久亚洲精品不卡 | 国产在线拍偷自揄拍视频 | 亚州一区二区三区 | 玖玖国产精品视频 | 99精品久久久久久久 | 涩涩99| 免费a大片 | 国产在线精品一区 | 久久国产视频一区 | 97伦理最新伦理 | 久久一本 | 久久久久久久一区 | 久久国内精品 | 丁香六月伊人 | 韩国电影久久 | www.99re | 日日做夜夜爽毛片麻豆 | 成人欧美一区二区三区1314 | 亚洲电影一级片 | 男女视频在线观看免费 | 日韩欧美在线观看 | 亚洲激情在线观看 | 欧美日韩在线精品 | 在线中文字幕亚洲 | 亚洲精品在线国产 | 成人免费网视频 | 国产黄色网址在线观看 | 国产一区二区三区精品久久久 | 国产一区2区 | 久久在线免费 | 免费h在线 | 日韩欧美在线视频观看 | 亚洲免费视频一区 | 日韩成人在线播放 |