添加await后调用then报promiseVariable.then is not a function错误原因
Promise加await后调用then报错原因分析
核心逻辑前提
await的作用是等待后方Promise状态变为兑现(fulfilled)后,直接返回该Promise的兑现结果,而非返回Promise对象本身- 你定义的
handlePromises函数返回的是Promise.all([...]),这是一个Promise对象,它的最终兑现结果是包含4个resolve字符串的普通数组
两次调用的差异
无await的正常调用
let getPromisesArray = handlePromises();
此时getPromisesArray拿到的是handlePromises返回的Promise实例,因此可以正常调用.then()方法绑定回调,运行符合预期。
加await的报错调用
let getPromisesArray = await handlePromises();
此时await已经完成了Promise的解包操作,getPromisesArray拿到的是最终兑现的普通数组,数组不存在.then()方法,因此抛出类型错误。
修正方案
如果使用await语法,就不需要再调用.then(),直接使用解包后的结果即可:
async function handlePromisesUsingAsync() { let getPromisesArray = await handlePromises(); console.log(getPromisesArray); }
内容的提问来源于stack exchange,提问作者Amit Dev
相关产品推荐
相关产品推荐

