gpt4 book ai didi

Javascript:在 x 次异步数据库/ajax 调用后是否有更好的方法来执行函数

转载 作者:行者123 更新时间:2023-12-04 02:08:53 25 4
gpt4 key购买 nike

使用 Backbone.js 我们有一个应用程序,在特定情况下我们需要向客户端网络服务发送 ajax 帖子。

但是,要发布的内容,是动态的,是由一定的数组决定的。

对于数组中的每一项,我们需要去获取一段数据。

组装好需要发送聚合对象的数据后。

到目前为止,我有一个同步方法,尽管我觉得这不是最好的方法。

var arrParams = [{id: 1, processed: false},{id: 7, processed: false},{id: 4, processed: false}];

function callback(data) {
$.post()... // jquery ajax to post the data... }

function fetchData(arr, data, callback) {
var currentId = _(arr).find(function(p){ return p.processed === false; }).id; // getting the ID of the first param that has processed on false...

// ajax call fetching the results for that parameter.
$.ajax({
url: 'http://mysuperwebservice.com',
type: 'GET',
dataType: 'json',
data: {id: currentId},

success: function(serviceData) {
data[currentId] = serviceData; // insert it into the data
_(arr).find(function(p){ return p.id === currentId; }).processed = true; // set this param in the array to 'being processed'.
// if more params not processed, call this function again, else continue to callback
if(_(arr).any(function(p){ return p.processed === false }))
{
fetchData(arr, data, callback);
}
else
{
callback(data);
}
},
error: function(){ /* not important fr now, ... */ }
});
}

fetchData(arrParams, {}, callback);

有没有办法异步启动这些调用并仅在所有结果都输入时才执行回调?

最佳答案

您必须使用 JQuery $.Deferred 对象来同步它们。看这篇文章Deferred Docs

你可以这样使用:

$.when(
$.ajax({ url : 'url1' }),
$.ajax({ url : 'url2' }) // or even more calls
).done(done_callback).fail(fail_callback);

关于Javascript:在 x 次异步数据库/ajax 调用后是否有更好的方法来执行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10428751/

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