问题描述
我有一个链接数组,但是并行地执行它们会使服务器挂起并超时。
var pages = linksArray.then(function(arr){
return arr.map(function(link){
return loader(link);
});
})。then (函数(数据){
console.log(data);
返回数据;
});
如何加载与链接数组关联的页面? loader是一个获取html的承诺解决方案
我有一个链接数组,但是并行地执行它们会使服务器挂起并超时。
var pages = linksArray.then(function(arr){
return arr.map(function(link){
return loader(link);
});
})。then (函数(数据){
console.log(data);
返回数据;
});
如何加载与链接数组关联的页面? loader是一个获取html的承诺解决方案
运行Promise数组的最常用方法是使用<$ c
$ b pre $ var $ pages = linkArray.then(function(arr ){
var pArray = [];
return arr.reduce(function(promise,link){
var ret = promise.then(function(){
return loader链接)
//接下来的3行将确保所有的链接处理 - 任何失败的链接将解析一个值== false
.catch(function(err){
return false;
$);
pArray.push(ret);
//接下来的三行记录每个加载器完成
ret.then(function() {
console.log('finished',link);
});
return ret;
},Promise.resolve())
.then (){
return Promise.all(pArra y);
});
))
然后您可以像这样访问结果
$ b $ (数据){
I have an array of links, but executing them in parallel like this makes the server hang up and time out
var pages = linksArray.then(function(arr){
return arr.map(function(link) {
return loader(link);
});
}).then(function(data){
console.log(data);
return data;
});
How can I load the pages that are associated with the array of links, in series? loader is a promise that gets the html
the most common way of running an array of Promises in series is using array.reduce
- like so
var pages = linksArray.then(function (arr) {
var pArray = [];
return arr.reduce(function (promise, link) {
var ret = promise.then(function() {
return loader(link)
// the next 3 lines will ensure all links are processed - any failed links will resolve with a value == false
.catch(function(err) {
return false;
});
});
pArray.push(ret);
// next three lines log when each loader has finished
ret.then(function() {
console.log('finished', link);
});
return ret;
}, Promise.resolve())
.then(function() {
return Promise.all(pArray);
});
})
You can then access the results like this
pages.then(function (data) {
// data is an array of results of loader
console.log(data);
}).catch(function(err) { // any errors should be logged here
console.log(err);
});
这篇关于按序列运行Promise的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!