gpt4 book ai didi

javascript - 在循环中多次调用函数后执行promise.then

转载 作者:行者123 更新时间:2023-12-01 01:39:20 25 4
gpt4 key购买 nike

我进行了以下设置。对于每个表行,我从中提取一个字段,将其发送到另一个构建新配置文件的函数 (buildProfile),该函数将其发送到另一个发布 AJAX 请求的函数 (postProfile)。例如,如果要保存 16 个表行,则在 url 重定向将其发送到新页面之前通常只保存其中的 9 行。我想仅在所有 promise 得到解决后重定向到“/”。我还取出了 URL 重定向,它们都成功保存了。

$(document).on('click', '#save-button', function () {
var promises = [];

$('tr').each(function () {
var field1 = $(this).children().eq(0).html();
promises.push(buildProfile(field1));
});

Promise.all(promises).then(function () {
window.location.replace('/');
});
});


function buildProfile(field1) {
var newProfile = {
Field1: field1,
Field2: 'foo',
Field3: 'bar'
}

postProfile(newProfile, function () { });
}

function postProfile(profile, callback) {
var url = '/api/profiles/';
$.ajax({
type: 'POST',
url: url,
contentType: 'application/json; charset=utf-8',
dataType: "json",
data: JSON.stringify(profile),
success: function (result) {
callback();
},
error: function (error) {
console.log(error);
}
});
}

最佳答案

您需要在postProfile()返回jqXHR对象,并在buildProfile()<中将它们返回给调用者 也是如此。

function buildProfile(field1) {
var newProfile = {
Field1: field1,
Field2: 'foo',
Field3: 'bar'
}

return postProfile(newProfile, function () { });
}

function postProfile(profile, callback) {
var url = '/api/profiles/';
return $.ajax({
type: 'POST',
url: url,
contentType: 'application/json; charset=utf-8',
dataType: "json",
data: JSON.stringify(profile),
success: function (result) {
callback();
},
error: function (error) {
console.log(error);
}
});
}

关于javascript - 在循环中多次调用函数后执行promise.then,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52558751/

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