美文网首页
模拟异步函数

模拟异步函数

作者: 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");
}

相关文章

  • 模拟异步函数

    异步函数实现机制(async.js) 实现了支持同步函数和异步函数的声明 声明异步函数 调用异步函数

  • 封装一个函数,实现请求失败重传

    一个异步请求/操作 模拟代码如下 要求:实现一个函数retry ,能对原函数进行封装,达到如下效果:如果如果请求失...

  • GCD的几种创建方式及基本使用

    同步函数 同步函数+主队列 同步函数+串行队列 同步函数+并发队列 异步函数 异步函数+主队列 异步函数+串行队列...

  • gennerator 函数

    模拟异步变同步

  • Future函数使用

    Future常用方法: 多个网络请求同时进行: await、async模拟异步网路请求: Future模拟异步网络请求:

  • 多线程GCD笔记

    同步函数 + 主队列 异步函数 + 主队列 同步函数 + 串行队列 异步函数 + 串行队列 同步函数 + 并发队列...

  • Node.js 工具库 BlueBird 的一些例子:map,e

    map 我是 Array.map() 函数的模拟,但用于异步任务。 我可以接受一个并发参数并返回一个 Promis...

  • Js 理解异步/回调/异步同步化/ async/await

    异步函数的理解 关键词:异步,函数名当参数传递,async/await 异步函数:需要时间去处理它,这个时间可能时...

  • async和await搭配使用

    async 异步关键字,一般我们把这个关键字写在函数前,用于表示函数是一个异步函数, 异步函数也就意味着该函数的执...

  • 42.async/await

    async异步函数的写法 async关键字用于声明一个异步函数 async异步函数的执行流程 如果只是在funct...

网友评论

      本文标题:模拟异步函数

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