javascript - 从 promise 返回的数组是未定义的

标签 javascript

我有一个调用 iTunes API 的函数,我从中返回一个对象数组。我的主要功能调用此(和其他 promise )并等待所有 promise 完成。然而,这对于 iTunes API promise 返回的数组始终是“未定义的”是有效的。

我的 promise :

function getiTunesMusic() {
  var options = {
    uri: "https://itunes.apple.com/lookup?id=62820413&entity=song&limit=10",
    json: true
  }

  retrieve(options) // This does a GET request
    .then(repos => {
        var result = repos.results
        result.shift() // I get the array of results, minus the first result
        console.log(result) // This prints out the full array of song objects
        return result
    })
    .catch((error) => {
        return null
    })
}

我的代码等待 promise 完成 block :

Promise.all(promises)
  .then(objects => {
    var music = objects[0]
    console.log("music", objects[0]) // This prints out "music undefined"
    profile.music = music
  }

奇怪的是,当我打印出我在 promise 中返回的 iTunes API 结果时,它打印正常。但是,在 promise 完成 block 中,它始终是未定义的。我该如何解决这个问题?

最佳答案

您没有从函数返回 promise ,因此返回默认返回值 undefined

尝试

return retrieve(options) // this returns the promise

代替

retrieve(options)

关于javascript - 从 promise 返回的数组是未定义的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48807830/

相关文章:

javascript - 表单验证javascript

javascript - 如何从另一个 Controller (而不是从模板)访问另一个 Controller 的属性

javascript - 如何访问按钮的 aria 扩展值

javascript - While循环导致浏览器崩溃

javascript - WebView HTML 渲染问题

javascript - Bootstrap 模式中的 Laravel ajax 搜索

javascript - 从vue中声明的组件获取数据

javascript - 在调用重新加载之前传递参数 $state Angular

javascript - 如何将查询过滤器添加到迭代跟踪板?

javascript - 使用 ng-hide/ng-show 和函数显示更多,显示更少