async/await 相关问题请指教
发布于 6 年前 作者 rianran1993 3490 次浏览 来自 问答
export default class DimensionApi extends BaseService {
    query(params) {
        return super.query(url, params)
    }

    async query1(params) {

        var a = await Api.query(url, params)
        console.log('query', a)  // 这里是一个axios对象
        return a

    }
}
// 调用
a = new DimensionApi('url').query1()  // 这个a 是个promise

为什么a 还是一个处于pending状态的promise呀? 在类里面的console打出来就已经不是一个promise了呀,我是什么地方用错了?

7 回复

首先 你的 super.query 返回的是一个promise 吗? 而且 你的promise resolve 还是 reject 了没有

@luanxuechao 我在测试query1方法,query1方法有问题

是在不行,只有在 调用的地方再 await 一下啦额

async函数返回Promise 对象,调用query1函数不加await,返回的就是Promise 对象啊。

async/await本质还是异步的,所以你要确定同步和异步,理一下程序执行的顺序

还有,async函数返回的是一个promsie

async function a(){return 1}

a()
Promise {<resolved>: 1}

哦, 原来async 函数的返回值是个promise呀.我明白了,谢谢各位

这个你要参考一下阮一峰的 es6教程, async/await是在本轮循环结束时执行的. 在本轮事件轮询里,注册 await, promise 状态为 pending, 然后执行 console.log, a就是 pending , 在本轮结束时, pending->resolve 时才能打印出结果.

不知道是不是这么理解的. 我也遇到这个问题,但是远程异步的结果是可以出来的,

回到顶部