【发布时间】:2019-02-15 01:28:15
【问题描述】:
我需要编写一些 Javascript(ES6 版本)来执行以下任务:
- 字符串为“item1,item2,item3,item4,item5”,
- fetch() 使用此字符串的 URL。
- 如果响应标志成功,则完成并退出。
- 如果响应标志为失败,则删除最后一项 (item5),因此现在字符串为“item1,item2,item3,item4”并重复第 2 步。
- 如果没有更多物品可掉落,请退出。
项目的总数是可变的。因此,我计划使用 do-loop 执行此任务,使用以下结构:
//suppose str = 'item1,item2,item3,....itemN'
do {
fetch(url, {param1: str}).then(response => {
//check the response flag, if success, done and exit.
//if not success, drop one item and re-do fetch
})
}
问题是 fetch 是一个异步调用,所以我不能强制每个 fetch 按顺序执行。
我需要确保仅在前一个 fetch() 失败时才执行新的 fetch()。有什么想法吗?
【问题讨论】:
-
function doFetch() { if (arr.length>0) fetch(url, {param1: arr.pop()}).then(response => { if (!success) doFetch(); }) -
你会用 ES8 吗?
标签: javascript ecmascript-6 es6-promise