版权声明: https://blog.csdn.net/qq_32858649/article/details/87932904
1、Promise
Promise核心在于其本身也是一个类似异步的函数结构,但是本身返回数据是顺序返回。
下面是我的代码。
//商品详情
goodsinfo(row, rows) {
return new Promise((resolve, reject) => {
this.axios.ajax({
data: data,
loading: true,
url: apilist.itselfApi.shopGoodsinfo,
success: e => {
resolve(123);
},
error: e => {
console.log(e);
reject();
}
});
});
},
//打开商品更新
openupdate(index, rows) {
//先打开商品详情
let that = this;
that.goodsinfo(index, rows).then(function(e) {
that.isgoodsinfo = {
...that.isgoodsinfo,
goodstype: 3,
title: "商品更新"
};
});
},
核心
new Promise((resolve, reject) => {你的异步函数});
这里这个是基本结构,所有异步函数都在这里进行处理。
resolve()函数是当你知道返回正确的时候进行调用的。
reject()这个是当发生错误的时候进行调用的。
也就是说,根据我上面的代码结构,我是success的时候正确。那么当前置操作都已经完成的时候那么就可以使用resolve函数。
完成之后,用.then()和.catch()分别代表正确的输出数据和错误的输出数据。但是这样属于异步,你可以直接把返回值获取出来,那么就可以直接获取同步数据。
2、async/await
async用来标识函数属于异步函数。
await用于表示等待。
await只能用于函数,并且是同步操作的函数。如果本身你所需要等待的函数是异步的,那么其实你的函数还是异步的。
这里,我对于单独使用async/await改同步表示个人是无法成功的。
async/await最终使用方式是配合Promise,类似于替代Promise.all的方式。
引用egg.js(阿里官方的nodejs企业级框架。初学者建议先学express再学koa2,然后再到egg.js)中的一句话:
async function 是语言层面提供的语法糖,在 async function 中,我们可以通过 await
关键字来等待一个 Promise 被 resolve(或者 reject,此时会抛出异常)
参考:https://www.jianshu.com/p/01c737a9184c
感觉简书的回答都特别好,总是简单直接。但是又很容易懂。