js有关验证是否异步执行的代码

在《你不知道的js(中卷)》中,有一段代码理解的不是很清晰,望大神解析!

代码如下:


function asyncify(fn) {

    var orig_fn = fn,

        intv = setTimeout(function() {

            intv = null;

            if (fn) fn();

        },0);

    fn = null;

    return function() {

        //触发太快,在定时器intv触发指示异步转换发生之前?

        if (intv) {

            fn = orig_fn.bind.apply(

                orig_fn,

                //把封装器的this添加到bind(..)调用的参数中

                //以及currying所有传入参数

                [this].concat([].slice.call(arguments))

            );

        }

        //已经是异步

        else {

            //调用原来的函数

            orig_fn.apply(this, arguments);

        }

    };

}

问题一:触发太快那儿,bind那条语句不是很明白。

问题二:这里的currying 怎样理解?

求大神解答!感激不尽!


慕勒3428872
浏览 382回答 1
1回答

茅侃侃

bind的作用是返回一个新的函数并改变函数里this指向,这里的函数可以分两步来理解1.bind改变了orig_fn原来的this指向为orig_fn自己2.再调用参数上再加上this
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript