通过方法A调用异步方法B,B方法返回promise对象,为何不能直接在A方法内部直接使用, 而是一定要在外部调用A方法,才能使用then和catch

来源:6-1 异步编程解决方案Async Await

愤怒的米饭

2020-06-29

在6-1节中, 模仿老师的代码, 通过foo2方法调用timeout方法.
result变量是调用异步方法timeout()获得的,
如果在foo2方法中选择return result变量, 并在foo2方法体外调用then和catch方法, 完全可以成功.
但是, 如果在foo2方法中直接通过result调用then和catch,则无法成功. 如下图:
图片描述

写回答

1回答

谢成

2020-06-30

这段代码中,foo2里的result对应的是上面resolve或者reject的参数,也就是success或者fail这样的字符串,字符串.then()是不可以的。

但是async函数会返回一个Promise对象,Promise对象就可以使用then方法了。

0
1
愤怒的米饭
非常感谢!
2020-06-30
共1条回复

JavaScript ES(6-11)全版本语法 前端都需要的基础课

前端无门槛学习,从ES6到ES11,一套课程掌握JS最新语法

1329 学习 · 296 问题

查看课程