上图是函数定义,下图是调用
红框处两个函数 调用的时候,得到的结果不一样。
大家帮忙看下红框处两个函数哪里有区别。感谢
await
可以用于 Promise 或者 Promise Like(即含 then(callback)
方法的对象),并不能用于其它情况(比如问题中使用 .success(callback)
方法代替 .then
的对象)。
关于 async/await
,请参阅这篇38万阅读量的文章:
对于问题中的情况,跟小程序的远程接口很像,所以可以参考下面这篇文章来解决(顺便说一句,新版的小程序接口已经支持 Promise,不再需要第三方封装了):
区别取决于msv.login.refreshToken
函数的返回值(楼主没说,只能猜想)。
msv.login.refreshToken
函数的返回值是个Promise
且fulfilled的value是res
;Promise
的写法,一般用于把回调方式异步调用转成Promise
方式。msv.login.refreshToken
函数的返回值不满条件127 回答13k 阅读
8 回答3.5k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
5 回答5.3k 阅读✓ 已解决
4 回答1.6k 阅读✓ 已解决
3 回答1.7k 阅读
4 回答2.3k 阅读✓ 已解决
不贴代码,我很难给你做事呀😂
原因是
await
不是智能的,它并不知道你是想在success
里resolve
。换言之,对于带异步过程而不返回
Promise
的函数而言,你必须得像第二段代码那样用Promise
包装返回值、并指明在何处resolve
,然后才能愉快地使用await
。这样看来,似乎用
await
还要更麻烦一些,但是返回Promise
的接口越来越多了,遇见一次包装一次就行了。爪机打字太麻烦了,多多担待。