模拟异步函数
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");
}