美文网首页
9,Promise同步写法,异步实现

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

作者: r8HZGEmq | 来源:发表于2019-11-18 16:42 被阅读0次

    为什么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);
    });
    

    相关文章

      网友评论

          本文标题:9,Promise同步写法,异步实现

          本文链接:https://www.haomeiwen.com/subject/flrbictx.html