美文网首页
Node promisify介绍经典的闭包实现

Node promisify介绍经典的闭包实现

作者: 萘小蒽 | 来源:发表于2022-12-21 12:14 被阅读0次

    我理解的是promisify是用来处理回调问题的,就这么简单。

    ES6 ES7出现了一批处理异步的函数,Promise Generator ansyc/await;

    比如在ES6之前我们读写文件就是依赖回调

    var  fs = requier('fs')
    fs.readFile('./index.vue',(err,data)=>{
        console.log(data.toString())
    })
    

    promisify

    const fs = require('fs');
    const {promisify} = require('util');
    const readFile = promisify(fs.readFile);
    ( ansyc()=>{   //模拟使用场景
      const data = await readFile('./index.vue');
    })
    

    promisify实现

    function promisify(fn) {
        console.log(fn,"fn"); // 保存的是原始函数(add)
        return function (...args) {
            console.log(...args,"...args"); // 2 6 保存的是调用时的参数
            //返回promise对象
            return new Promise(function (resolve, reject) {
                // 将callback放到参数末尾,并执行callback函数
                args.push(function (err, ...arg) {
                    console.log('..............arg',arg)
                    if (err) {
                        reject(err);
                        return;
                    }
                    resolve(...arg);
                });
    
                fn.apply(null, args);
            });
        }
    }
    

    相关文章

      网友评论

          本文标题:Node promisify介绍经典的闭包实现

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