multiple, sequential fetch() Promise(多个,顺序 fetch() 承诺)
问题描述
我必须做出一系列 fetch()
承诺:我一次只有 1 个 url,这意味着只有 1 个 fetch()
承诺.每次我收到一个 json 时,这个包含另一个 json 的 url,所以我必须做出另一个 fetch()
承诺.
I have to make a sequence of fetch()
Promise: I have only 1 url at a time, this means only 1 fetch()
promise. Every time I receive a json,this one contains an url for another json, so I have to make another fetch()
promise.
我可以使用多个 Promise,但在这种情况下我不能执行 Promise.all()
,因为我没有所有的 url,只有一个.
I'm able to work with multiple promise, but in this case I can't do Promise.all()
, because I don't have all the url, but only one.
这个例子不起作用,一切都冻结了.
This example doesn't work, it all freezes.
function fetchNextJson(json_url)
{
return fetch(json_url, {
method: 'get'
})
.then(function(response) {
return response.json();
})
.then(function(json) {
console.log(json);
return json;
})
.catch(function(err) {
console.log('error: ' + error);
});
}
function getItems(next_json_url)
{
if (!(next_json_url)) return;
get_items = fetchNextJson(next_json_url);
interval = $q.when(get_items).then(function(response) {
console.log(response);
next_json_url = response.Pagination.NextPage.Href;
});
getItems(next_json_url);
}
var next_json_url = 'http://localhost:3000/one';
getItems(next_json_url);
推荐答案
可以使用递归
function fetchNextJson(json_url) {
return fetch(json_url, {
method: 'get'
})
.then(function(response) {
return response.json();
})
.then(function(json) {
results.push(json);
return json.Pagination.NextPage.Href
? fetchNextJson(json.Pagination.NextPage.Href)
: results
})
.catch(function(err) {
console.log('error: ' + error);
});
}
var next_json_url = 'http://localhost:3000/one';
var results = [];
fetchNextJson(json_url).then(function(res) {
console.log(res)
})
这篇关于多个,顺序 fetch() 承诺的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:多个,顺序 fetch() 承诺


基础教程推荐
- 我什么时候应该在导入时使用方括号 2022-01-01
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- 动态更新多个选择框 2022-01-01
- 响应更改 div 大小保持纵横比 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06