首页 > 解决方案 > 之后我有两个嵌套循环,有一个重要的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);
                                    })
                                })
                            })

标签: javascriptasync-awaitpromisees6-promise

解决方案


推荐阅读