0
点赞
收藏
分享

微信扫一扫

异步的几种实现方式

落拓尘嚣 2022-02-02 阅读 91
前端

1、回调callback()------现在很少使用

2、es6---promise()------使用较多,简单使用时可读性不错且容易理解,但如果情景较复杂时便有局限。

funtion fun() {
    return new Promise((resolve,reject) => {
        if (success) {
            resolve(data);
        } else {
            reject(error);
        }
    })
}
fun.then((data) => {
    console.log(data);
});

3、es6---Generator函数

yield和awist返回的内容都是new promise(),而且最好写在try...catch...中,给个容错机制,否则如果第一个yield和awist返回的是reject的话,下面的就不会继续执行。

function* gen(x){
  var y = yield x + 1;
  return y;
}

var g = gen(1);
g.next() // { value: 2, done: false }
g.next(5) // { value: 5, done: true }
--------------------------------------------
function* gen(x){
  try {
    var y = yield x + 1;
  } catch (e){
    console.log(e);
  }
  return y;
}

var g = gen(1);
g.next(); // { value: 2, done: true }
g.throw('出错了'); // 出错了

4、es7---async函数

async 函数的实现,就是将 Generator 函数和自动执行器,包装在一个函数里。

async function fun(args){
  // ...
}
// 等同于
function fun(args){
  return qiDong(function*() {
    // ...
  });
}

fun.then(() => {});
举报

相关推荐

0 条评论