zoukankan      html  css  js  c++  java
  • ES6.0 Generator 三种用法

    // Generator start -------  thunk 用法

    const Thunk = function(fn) {
    return function (...args) {
    return function (callback) {
    return fn.call(this, ...args, callback);
    }
    };
    };
    const run_thunk = function (fn) {
    var gen = fn();

    function next(data) {
    var result = gen.next(data);
    if (result.done) return;
    result.value(next);
    }
    next();
    }

    var readFile = Thunk(fs.readFile);
    function* g() {
    var f1 = yield readFile('fileA');
    var f2 = yield readFile('fileB');
    // ...
    var fn = yield readFile('fileN');
    }
    run_thunk(g);

    ---------- promise用法
    function run_promise(gen){
    var g = gen();

    function next(data){
    var result = g.next(data);
    if (result.done) return result.value;
    result.value.then(function(data){
    next(data);
    });
    }
    next();
    }

    var fs = require('fs');

    var readFile = function (fileName){
    return new Promise(function (resolve, reject){
    fs.readFile(fileName, function(error, data){
    if (error) return reject(error);
    resolve(data);
    });
    });
    };

    var gen = function* (){
    var f1 = yield readFile('/etc/fstab');
    var f2 = yield readFile('/etc/shells');
    console.log(f1.toString());
    console.log(f2.toString());
    };

    run_promise(gen);


    // -----------co 用法

    var gen = function* () {
    var f1 = yield readFile('/etc/fstab');
    var f2 = yield readFile('/etc/shells');
    console.log(f1.toString());
    console.log(f2.toString());
    };

    // var co = require('co');
    // co(gen);
    // co(gen).then(function (){
    // console.log('Generator 函数执行完成');
    // });

    //------------co end

    // Generator end -------
  • 相关阅读:
    linux一些配置
    tomcat启动后,页面无法访问
    利用jmeter实现多IP压测
    java操作数据库
    excle中表头分割单元格
    常用的最大流算法 Dinic 和 最小费用最大流SPFA写法
    [kuangbin]带你飞之'网络流'专题
    (留坑以后再看)一般图'最大匹配' 带花树 算法
    二分图'多重匹配'
    二分图'最大匹配' HK 算法
  • 原文地址:https://www.cnblogs.com/Mvloveyouforever/p/7050397.html
Copyright © 2011-2022 走看看