js中Promise和async/await的使用,对ajax函数改同步处理。

版权声明: 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

感觉简书的回答都特别好,总是简单直接。但是又很容易懂。

猜你喜欢

转载自blog.csdn.net/qq_32858649/article/details/87932904