我有一个调用 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/