美文网首页
模拟异步函数

模拟异步函数

作者: baixin | 来源:发表于2020-08-24 12:30 被阅读0次

    异步函数实现机制(async.js)

    • 实现了支持同步函数和异步函数的声明
    function asyncFn(functionBody, asyncSign) {
    
        var args = {};
        // 这是同步函数的执行机制
        var result = function () {
            args = arguments;
            return asyncSign ? undefined : functionBody(...args)
        };
    
        // 这是异步函数的执行机制
        if (asyncSign) {
            setTimeout(function () {
                result = functionBody(...args);
                
            }, 1);
        }
    
        return result;
    }
    
    module.exports = function({async} = {async: true}) {
        return function(fn) {
            return asyncFn(fn, async);
        };
    }
    

    声明异步函数

    let async = require("./async.js")();
    
    var foo = async(function (name, age, callback) {
        console.log(name);
        callback(3);
        return 3;
    });
    
    

    调用异步函数

    try {
        var result = foo("name", "backk", function (number) {
            console.log(number);
        });
        console.log("result: " + result)
    } catch (error) {
        console.log("error");
    }
    

    相关文章

      网友评论

          本文标题:模拟异步函数

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