我不仅要返回此Promise的结果,还要返回被调用的可迭代的url
。 urls
是一个网址数组。
function findMainLink(urls) {
return Promise.all(urls.map((url) => {
var result = nightmare
.goto(url)
.wait('#main')
.evaluate(function() {
return document.querySelector('#main a').href;
});
nightmare.end()
return result
}
}
vo(findMainLink)([
'https://yahoo.com',
'https://google.com'
])
.then(res => console.log(res))
.catch(e => console.error(e))
当我执行
return {result,url}
时,它无法解析,但会给我发回Promise的当前状态。如何在结果中包含网址?
最佳答案
你想要的是
function findMainLink(urls) {
return Promise.all(urls.map((url) => {
var result = nightmare
.goto(url)
.wait('#main')
.evaluate(function() {
return document.querySelector('#main a').href;
});
nightmare.end();
return result;
})
.then(results => results.map((result, i) => ({result, url[i]}));
}
将元组数组传递给
Promise.all
当然是行不通的,因为元组不是一个 promise ,而且Promise.all
无法知道应该在tuple
内部查看。相反,上面的代码等待所有promise解析,然后将结果映射为您提供的元组数组(并为此返回一个promise)。
关于javascript - 在Promise.all中使用Resolve返回可迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38230663/