9,Promise同步写法,异步实现

为什么Promise的写法是同步的,但实现了异步操作,即实现了任务的不连续
Generator函数,交出了执行权。Generator容器中会有暂停标志位

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

var g = gen(1);
g.next() // { value: 3, done: false }
g.next() // { value: undefined, done: true }

Generator返回一个内部指针g,而不是返回结果。调用g.next(),会移动内部指针的阶段。next让异步任务的容器Generator,分阶段的执行任务,返回一个对象(value属性和done属性)。done表示是否执行完

再看一个例子:Async/Await也是一个自执行的generate函数

var fetch = require('node-fetch');

function* gen(){  // 这里的*可以看成 async
  var url = 'https://api.github.com/users/github';
  var result = yield fetch(url);  // 这里的yield可以看成 await
  console.log(result.bio);
}
// execute
var g = gen();
var result = g.next();
result.value.then(function(data){
  return data.json();
}).then(function(data){
  g.next(data);
});
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容