如何解决如果函数返回新的Promise,是否需要async关键字?
我有一个检查图像是否存在的函数,如下所示:
function getImage(source) {
return new Promise((resolve,reject) => {
const img = new Image()
img.onload = () => resolve(img)
img.onerror = reject
img.src = source
}
}
我应该将函数编写为:
async function getImage(source) {
return new Promise((resolve,reject) => {
const img = new Image()
img.onload = () => resolve(img)
img.onerror = reject
img.src = source
}
}
在这种特殊情况下是否有所不同?有人可以解释一下吗?
代码将像这样使用:
async function checkImage() {
try {
const img = await getImage('path-to-image')
this.logoImg = img.src // does something with the image
}
catch(e) {
this.logoImg = 'path-to-a-different-image' // does something else if the image is broken,etc.
}
}
不要管“ this.logoImg”部分。
非常感谢。
解决方法
不,
async
是functions
的使用者,其中使用await
。
await
用于避免.then
如果getImage
仅返回promise
,则无需使用async
function getImage(source) { // This function returns promise
return new Promise((resolve,reject) => {
// ..doesn't have await..
}
}
此处async
是必需的,因为usingGetImage()
在其中使用了await
async function usingGetImage(){
const img = await getImage('my-image')
}
希望这会回答您的问题:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。