繁体   English   中英

Promise.all返回未定义的值

[英]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数组。 您也不应在thenreturn 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM