Javascript 由异步创建的未定义不解析?

Javascript 由异步创建的未定义不解析?,javascript,Javascript,我目前有以下场景。我真的不明白为什么会发生这种情况,可能是因为它没有及时解决或者其他原因 根据世博会的文件。 以下方法将返回一个对象 MediaLibrary.getAlbumAsync('pleaseDontDownVote'); MediaLibrary为用户提供了一个摄像头,getAlbumAsync方法用于获取名为“PleasedOnDownVote”的相册。我已经确认了MediaLibrary的工作原理,因为它是用来制作相册的,而且我还确认了相册“pleaseDontDownVote

我目前有以下场景。我真的不明白为什么会发生这种情况,可能是因为它没有及时解决或者其他原因

根据世博会的文件。 以下方法将返回一个对象

MediaLibrary.getAlbumAsync('pleaseDontDownVote');
MediaLibrary为用户提供了一个摄像头,getAlbumAsync方法用于获取名为“PleasedOnDownVote”的相册。我已经确认了MediaLibrary的工作原理,因为它是用来制作相册的,而且我还确认了相册“pleaseDontDownVote”出现在设备上

我还有另一种方法,就是:

savePictures = () => {
      let getCameraRoll = this.orderPhotoAlbum();
      getCameraRoll.then(cameraRollItem => console.log(cameraRollItem))
}
这就是我“认为”我正在做的,我的方法savePictures正在getCameraRoll中执行这个.orderPhotoAlbum,然后我等待它执行,这样我就可以继续了

async orderPhotoAlbum() {
  await MediaLibrary.getAlbumAsync('pleaseDontDownVote');
}
MediaLibrary方法包装在异步方法中,因此它将等待响应。 我想orderPhotoAlbum()会等待得到响应,然后再传递给我的“then”。然后(cameraRollItem=>console.log(cameraRollItem))中的console.log表示未定义。这是我管理异步/等待的方式的问题吗


注意:我给这个js添加了标签,因为我认为它与Expo的关系不像与async/await的关系那么大。你可能错了。

orderPhotoAlbum没有返回任何内容,因此
未定义

async orderPhotoAlbum() {
  return await MediaLibrary.getAlbumAsync('pleaseDontDownVote');
}

编辑:正如Jake提到的,此时,
wait
async
是冗余的。我保留它们是因为它清楚地表明函数返回一个承诺。不过,这只是个人喜好的问题。

orderPhotoAlbum
没有返回任何内容,因此
未定义

async orderPhotoAlbum() {
  return await MediaLibrary.getAlbumAsync('pleaseDontDownVote');
}
编辑:正如Jake提到的,此时,
wait
async
是冗余的。我保留它们是因为它清楚地表明函数返回一个承诺。不过,这只是个人喜好的问题。

orderPhotoAlbum()
当前编写的内容不会返回MediaLibrary.getAlbumAsync('PleasedOnDownVote')的结果,因为默认情况下,
wait
不会像您期望的那样返回。尝试将其更改为:

function orderPhotoAlbum() {
  return MediaLibrary.getAlbumAsync('pleaseDontDownVote');
}
请注意,它不再是一个异步函数,但它仍然返回一个
Promise
so
。然后
将对它起作用。

orderPhotoAlbum()
当前编写的函数不会返回
MediaLibrary.getAlbumAsync('pleaseDontDownVote')的结果,因为默认情况下,
wait
不会像您期望的那样返回。尝试将其更改为:

function orderPhotoAlbum() {
  return MediaLibrary.getAlbumAsync('pleaseDontDownVote');
}

请注意,它不再是一个异步函数,但它仍然返回一个
承诺
so
。然后
将处理它。

而不是等待MediaLibrary.getAlbumAsync('PleasedOnDownVote');请尝试返回媒体库。。。。等等。为了让函数返回承诺,您需要返回。您可以使用的。然后在其他函数中启用。您的函数不包含
return
语句,因此它返回
undefined
。而不是等待MediaLibrary.getAlbumAsync('PleasedOnDownVote');请尝试返回媒体库。。。。等等。为了让函数返回承诺,您需要返回。您可以使用的。然后在其他函数中启用。您的函数不包含
return
语句,因此它返回
undefined