Javascript API和循环迭代值不匹配

Javascript API和循环迭代值不匹配,javascript,angular,loops,http,promise,Javascript,Angular,Loops,Http,Promise,因此,我有一个复杂的问题,可能很容易评估,但我在如何让它发挥作用方面遇到了问题 我有一个全局对象,它存储不同的表单提交,当按下一个按钮时,它会根据其中的值键遍历这些值和API。该函数可以工作,但是循环会完全迭代,然后命中API 我想拼接或删除从对象中成功提交的值,并保留未提交的值。我还想在API调用的每次迭代之间设置某种类型的延迟或超时,以避免每次调用都同时命中API 我的代码可能比应该的复杂,但我一直在尝试使用不同的源代码。我还阅读了关于循环上的闭包的内容,并理解了为什么循环在API完成之前就

因此,我有一个复杂的问题,可能很容易评估,但我在如何让它发挥作用方面遇到了问题

我有一个全局对象,它存储不同的表单提交,当按下一个按钮时,它会根据其中的值键遍历这些值和API。该函数可以工作,但是循环会完全迭代,然后命中API

我想拼接或删除从对象中成功提交的值,并保留未提交的值。我还想在API调用的每次迭代之间设置某种类型的延迟或超时,以避免每次调用都同时命中API

我的代码可能比应该的复杂,但我一直在尝试使用不同的源代码。我还阅读了关于循环上的闭包的内容,并理解了为什么循环在API完成之前就完成了,但我只是想知道是否有更好的方法,或者基本上是想让代码正常运行

如果您能帮助我进一步学习本课程或其他方法,我们将不胜感激

编辑:因此,我从调用中删除了setTimeout(),迭代工作正常,但由于某种原因,数组将拼接到最后两个值,因此被卡住。我还注意到,当API调用被删除时,I变量工作正常,但当我添加它时,它会被丢弃

调用API的我的提供程序:
submitBatchData(数据,authToken){
//日志(数据、authToken);
常量httpOptions={
标题:新的HttpHeaders({
“接受”:“application/json,text/plain”,
“内容类型”:“应用程序/json”,
“授权”:authToken
})
};
返回this.http.post(this.apitsubmittreaturl,JSON.stringify(数据),httpOptions)。重试(3)。超时(10000)。延迟(2000);
}
我想拼接或删除从对象中成功提交的值,并保留未提交的值。我还想在API调用的每次迭代之间设置某种类型的延迟或超时,以避免每次调用都同时命中API

是否有需要拼接和删除值的原因?如果将表单项保留在数组中,并使用包含表单状态的数据结构,该怎么办

[
    {
        form: {...},
        status: "pending" // or "invalid" or "submitted" etc
    },
    ...
]

如果遵循此设计,则可以以不同的方式多次迭代表单,而不会导致错误

查看
承诺
异步等待(await)
,这里有一些文档链接()和()将等待处理可观察对象?我正在为我的API请求使用Observable。看起来你可以,但只有使用promise,请看这篇文章()如果我在问题上添加更多细节,你有没有可能提供答案?我已经尝试在我的可观察回调上使用async,Wait,但是我没有看到任何差异。同样的结果。问题是,只有当用户无法连接到我的API(用户可能会在没有连接的情况下使用应用程序)时,才会使用此功能。因此,脱机保存表单,并在出现信号时重新提交给API。理想情况下,如果成功提交值,则从数组中删除这些值,如果不成功,则将这些值保留在数组中。这允许用户多次尝试,直到全部成功。你的方法是可行的,但我觉得随着时间的推移,结构会变得非常大,除非我能做些什么来转储它。尝试你的解决方案后,我发现它确实有效!我能够分离提交和数组值,并在提交成功命中后拼接这些值!非常感谢你!