gpt4 book ai didi

javascript - 调用ajax函数,然后等待,然后再次调用另一个ajax函数

转载 作者:行者123 更新时间:2023-11-28 01:25:57 27 4
gpt4 key购买 nike

到目前为止我这样做了:

$.when(Results.ServiceController.Ajax1(clickedNumber))
.then(Results.UtilFunctions.Wait(5000))
.then(Results.ServiceController.Ajax2(clickedNumber));

我的 Ajax1 函数返回 ajax 对象。我的等待函数如下所示:

function (time) {
var ret = new $.Deferred();
setTimeout(function () {
ret.resolve();
}, time);
return ret;
}

问题是第二个ajax请求函数(Ajax2)没有等待Wait函数!编辑:我也尝试过:

$.when(Results.ServiceController.Ajax1(clickedNumber),Results.UtilFunctions.Wait(5000))  
.then(Results.ServiceController.Ajax2(clickedNumber));

一切都没有改变。来自 jQuery 文档:

“在将多个 Deferred 对象传递给 jQuery 的情况下,该方法从新的“主”Deferred 对象返回 Promise,该对象跟踪已传递的所有 Deferred 的聚合状态。该方法将解析其一旦所有 Deferreds 解析,就主控 Deferred,或者一旦其中一个 Deferreds 被拒绝,就拒绝主控 Deferred。如果主控 Deferred 被解析,则将传递给 jQuery.when 的所有 Deferreds 的解析值传递给它。例如,当 Deferreds 是 jQuery.ajax() 请求时,参数将是请求的 jqXHR 对象,按照参数列表中给出的顺序排列。”

最佳答案

setTimeout(...) 始终立即返回,并且作为第一个参数传递的函数将在超时到期后执行。

你应该这样做:

function (f, arg, time) {
setTimeout(function () {
f(arg);
}, time);
}

$.when(Results.ServiceController.Ajax1(clickedNumber))
.then(Results.UtilFunctions.Wait(
Results.ServiceController.Ajax2, clickedNumber, 5000
));

相反。

关于javascript - 调用ajax函数,然后等待,然后再次调用另一个ajax函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22684921/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com