方法异步,想用async获取 可是只能用Promise获取 为什么 求大佬解释下 不太懂 谢谢了
我想获取cos.deleteObject 里的data数据 然后 Promise里获取成功了 反而async/await 里获取不到 这个能帮助我 告我下是什么原理嘛 、cos那个应该是异步的方法 然后 await 不是应该对这个同步后在执行其他的方法嘛?
Promise
function deleteImg() {
return new Promise(function (resolve, reject) {
cos.deleteObject(params, function (err, data) {
if (err) {
resolve(err)
} else {
resolve(data)
}
})
})
}
async await
async function deleteImg() {
var a = await cos.deleteObject(params, function (err, data) {
if (err) {
return err
} else {
return data
}
})
return a
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
你可以把 async/await 看成是在 promise 上面又封装了一层,对 promise 对象有效,对用回调的普通函数无效:
cos.deleteObject用的是回调 不是成功/失败后走的then/catch await之后的可以大体理解为 Promise.resolve(之后的代码)然后在then里把返回值返回给=号之前的变量 可以看下co模块理解下
所以可以把回调修改为promise 就是把你第一个封装到promis的方法放到await之后
async await 正确写法如下:
你不是想把 deleteImg 函数写成 async 函数的形式,
从你的的代码看 完全没有这个必要;
理解
async
实质你就明白了:async
函数返回的其实也是一个promise
,也就是说你原来那个返回
promise
的函数可以在async
函数中用await
关键字;你参考一下 @notebin 给的代码