模拟异步函数

2020-08-24  本文已影响0人  baixin

异步函数实现机制(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");
}
上一篇下一篇

猜你喜欢

热点阅读