javascript - 之后我有两个嵌套循环,有一个重要的promise调用,它按顺序通过服务器,但它没有按顺序调用
问题描述
这是我的代码,除此之外,它们都可以正常工作:new forms().saveForm(item, null)。它没有按顺序调用,表单是另一个 js 文件中的原型,我在这里调用。我应该怎么做才能按顺序调用它?
这是我的保存表单功能
const _saveForm = function (model, serverId) {
return new Promise((resolve, reject) => {
try {
$.ajax({
beforeSend: function () { loadPanel.indicatorShow(); },
complete: function () { loadPanel.indicatorHide(); },
method: 'POST',
url: '/Publish/AddForms',
data: { form: model, serverFormId: serverId },
}).done((data) => {
if (data.HasError) {
reject({ state: 'error', content: data });
}
if (!data.HasError) {
resolve({ state: 'done', content: data });
}
}).fail((errorThrown) => {
reject({ state: 'fail', content: errorThrown });
});
} catch (error) {
reject({ state: 'error', content: error });
}
});
}
const s_db = new storeDb();
s_db.getBasicFormDataFromDb().then((result) => {
return result;
}).then((basicForms) => {
s_db.getProviderIdsFromDb().then((providerIds) => {
basicForms.forEach(async (item) => {
var arr_field = [];
const _form_fields = item['fields'];
_form_fields.forEach(async fieldItem => {
var jsondata = JSON.parse(fieldItem);
if (jsondata.hasOwnProperty('SelectiveSetting')) {
var replacePId = jsondata.SelectiveSetting.DataProvider.ProviderId;
_.find(providerIds, (k) => {
if (k['oldId'] === replacePId) {
jsondata.SelectiveSetting.DataProvider.ProviderId = k['newId'];
fieldItem = JSON.stringify(jsondata);
}
});
}
arr_field.push(fieldItem);
});
item['fields'] = arr_field;
new forms().saveForm(item, null);
})
})
})
解决方案
推荐阅读
- file - Flutter .listen 被多次调用
- android - 无法生成另一个调试密钥库错误:缺少密钥库
- javascript - 根据 URL 添加活动菜单或导航类
- azure - ARRAY_CONTAINS 可以在 Cosmos 中接受多个值吗
- docker - gramex 码头工人 | 在 docker 中运行多个实例
- android - Android:Firebase ViewModel 架构
- tensorflow - 触发 TF 对象检测 API 上的 eval.py 时出错
- javascript - Vue中有没有办法将军事时间转换为标准时间
- html - Masonry Layout:防止div打散或被切割
- java - Javalin Websocket 客户端静默连接失败