[英]Promise.all returning undefined value
我有一个功能,可以向服务器发出多个带有request-promise
的请求:
query = function(entity) {
//some SPARQL request here with the "entity" parameter
rp(url)
.then(function(res) {
console.log(res)
return new Promise(resolve => res)
})
.catch(function(err) {
console.log("error")
})
}
async function musicData() {
data = [1,2,3,4]
var queries = data.map(query)
var results = await Promise.all(queries)
return results
}
musicData()
.then(function(resp) {
console.log(resp);
})
.catch(function(err) {
console.log("err")
})
我不知道为什么musicData()
返回undefined
值的数组。 考虑到query()
中的console.log(res)
query()
记录了正确的响应,如何使其返回承诺?
您不会从query
返回任何内容,因此不会将诺言返回给映射函数,因此queries
最终将成为undefined
数组。 您也不应在then
内return new Promise
仅返回您以后要使用的值。 改成:
const query = function(entity) {
return rp(url)
.then(function(res) {
console.log(res);
return res;
})
// ...
(注意不要隐式创建全局变量)
query
函数没有return
语句,因此它将始终返回undefined
。
var queries = data.map(query)
会将数据映射到undefined
值的数组。
您需要编辑query
以便它返回Promise 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.