几种js 异步处理方式

1.回调函数

function f1(callback){

    setTimeout(function () {

      // f1的任务代码

      callback();

    }, 1000);

  }

2.事件监听

 f1.on('done', f2);

 function f1(){

    setTimeout(function () {

      // f1的任务代码

      f1.trigger('done');

    }, 1000);

  }

3.观察者模式

我们假定,存在一个"信号中心",某个任务执行完成,就向信号中心"发布"(publish)一个信号,其他任务可以向信号中心"订阅"(subscribe)这个信号,从而知道什么时候自己可以开始执行。这就叫做"发布/订阅模式"(publish-subscribe pattern),又称"观察者模式"(observer pattern)。

jQuery.subscribe("done", f2);

function f1(){

    setTimeout(function () {

      // f1的任务代码

      jQuery.publish("done");

    }, 1000);

  }

jQuery.unsubscribe("done", f2);//取消订阅(unsubscribe)。

4.promise对象
function doSomething(){
  return new Promise(function(resolve){
    setTimeout(function(){
      console.log('执行结束');
      let result = 6;
      resolve(result);
    },100);
  });
 
}
 
doSomething().then(result=>{
  console.log('接收到结果为:'+result);
});
 
5.generator函数
function doSomething(){
  setTimeout(function(){
    let result = 6;
    it.next(result);
  },100);
}
 
function *gener(){
  var result = yield doSomething();
  console.log(result);
}
 
let it = gener();
it.next();
 
6.async(ES7)
function doSomething(){
  return new Promise(resolve=>{
    setTimeout(function(){
      let result = 6;
      resolve(result);
    },100);
  });
 
}
 
async function action(){
  let result = await doSomething();
  console.log(result);
}
action();


原文:https://blog.csdn.net/weixin_41697143/article/details/82758886 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值