co函数库

co可以说是给generator增加了promise实现。co是利用Generator的方式实现了async/await(co返回Promise对象,async也返回Promise对象,co内部的generator函数即async,yield相当于await)

co 函数库其实就是将两种自动执行器(Thunk 函数和 Promise 对象),包装成一个库。

co函数接收一个Generator生成器函数作为参数。执行co函数的时候,生成器函数内部的逻辑像async函数调用时一样被执行。不同之处只是这里的await变成了yield(产出)。

co(function* () {
  var result = yield Promise.resolve(true);
  return result;
}).then(function (value) {
  console.log(value);
}, function (err) {
  console.error(err.stack);
});

Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件监听——更合理和更强大。 promise catch函数和then第二个函数参数:

promise.catch();
// 等价于
promise.then(null, function(reason){});

有许多场景是异步的: 1.事件监听,如click,onload等事件 2.定时器 setTimeout和setInterval 3.ajax请求

js异步编程模型(es5):

  • 回调函数(callback)陷入回调地狱,解耦程度特别低
  • 事件监听(Listener)JS 和浏览器提供的原生方法基本都是基于事件触发机制的
  • 发布/订阅(观察者模式)把事件全部交给控制器管理,可以完全掌握事件被订阅的次数,以及订阅者的信息,管理起来特别方便。
  • Promise 对象实现方式

async函数与Promise、Generator函数一样,是用来取代回调函数、解决异步操作的一种方法。它本质上是Generator函数的语法糖。 Promise,generator/yield,await/async 都是现在和未来 JS 解决异步的标准做法

results matching ""

    No results matching ""