zoukankan      html  css  js  c++  java
  • ES6异步操作Thunk、co和async

      使用Thunk函数对Generator函数进行流程管理,首先什么是Thunk函数?我们应该先说下参数的求值策略,编译器的求值策略一个是“传值调用”另一个是“传名调用”,编译器的传名调用实现往往是现将函数放到一个临时函数中,再将这个临时函数传入函数体,这个临时函数就是Thunk。

      如果用于生产环境的转换器,建议使用Thunkify模块。首先安装 npm install thunkify,如果你不想去写Generator构造器,那么安装co吧,安装命令为 npm install co ,这个co是一个自动执行器。

    var thunkify = require('thunkify');
    var co = require('co');
    var test = function *() {
        var a1 =  console.log(1);
        var a2 =  console.log(2);
        var a3 =  console.log(3);
        var a4 =  console.log(4);
        return '完毕';
    };
    console.log(co(test));            //1 2 3 4 Promise { '完毕' }

      如果你还想懒那么就可以使用async(注意这是ES7提供的函数),他是Thunk+co。他就是将Generator函数的*号换成了async,将yield换成了await而已。

    var sleep = function (time) { 
        return new Promise(function (resolve, reject) { 
            setTimeout(function () { 
            resolve(); 
        }, time); }) 
    }; 
    var start = async function () { 
    // 在这里使用起来就像同步代码那样直观 
        console.log('start'); 
        await sleep(3000); 
        console.log('end'); 
    }; 
    start();        //start (三秒后) end
  • 相关阅读:
    sshd服务(使用ssh协议远程开启其他主机shell的服务)
    centos 端口及防火墙
    Linux系统常用指令积累
    Vue插值
    Vue生命周期钩子
    WinForm常用窗体属性及控件
    SQL Server 如何设置某列自增
    .mdf和.ldf文件导入SQL server 数据库
    .netCoreApi 定时任务
    c# web请求
  • 原文地址:https://www.cnblogs.com/qiaohong/p/7705272.html
Copyright © 2011-2022 走看看