zoukankan      html  css  js  c++  java
  • ES6——Thunkify用法

    1.

    生产环境的转换器,建议使用 Thunkify 模块。
     
    // "use strict"
    function thunkifyy(fn) {
        return function() {
            console.log(arguments);  //Arguments(2) [8, 9, callee: ƒ, Symbol(Symbol.iterator): ƒ]
            console.log(arguments.length);  // 2
    //         console.log(arguments[3]);  //        console.log(arguments[3]) ==> undefine
            var args = new Array(arguments.length);
            var ctx = this;
            for (var i = 0; i < args.length; ++i) {
                args[i] = arguments[i];
            }
            return function(done) {
                console.log(done);  // f log() { [native code] }
                var called;
                console.log(args);  //[8, 9]
                args.push(function() {
                    if (called) 
                            return;
                    called = true;
                    done.apply(null, arguments);  //定义了一个函数 作为参数,添加到args数组,在fn.apply(ctx, args);被调用
                });
                console.log(args);  //[8, 9, f]
    
                try {
                    console.log(fn)
                    fn.apply(ctx, args);  //17
                } catch(err) {
                    done(err);
                }
            }
        }
    };
    
    function f(a, b, callback){
            var sum = a + b;
                     callback(sum);  //虽然这里多次调用,也只会输出一次。8+9=17
                     callback(sum);
    }
    
    var ftt = thunkifyy(f);
    var print = console.log.bind(console);
    // ftt(1, 2,3,4,5,6,7,8,9,0)(print);
    ftt(8,9)(print);  //17
  • 相关阅读:
    进度条加载后显示页面
    解决跨域问题
    js下IE和FF的一些兼容写法总结
    linux
    linux 批量替换文件内容
    DVWA-1.9之fileupload
    python库安装失败的解决方法
    python程序打包
    CF 1133C Balanced Team
    CF 1133B Preparation for International Women's Day
  • 原文地址:https://www.cnblogs.com/sunupo/p/15481677.html
Copyright © 2011-2022 走看看