美文网首页
纯手工打造promisify函数,转换普通回调函数到Promis

纯手工打造promisify函数,转换普通回调函数到Promis

作者: TOPro | 来源:发表于2018-03-22 09:43 被阅读111次

问题


经常会遇到把普通callback形式的函数转换成Promise形式,一般情况下需要在原来函数上嵌套一层壳来实现,但是如果需要转换的函数比较多,这种方法就有些繁琐。毕竟给每个函数都做一层嵌套,要浪费很多行数。下面就来解决这个问题。

解决


先贴代码

/**
 * 转换类似dosomething(
 *      params-1,params-2,..,successHandler,errorHandler,params-n,...
 * ) 为promise形式
 * promisify(dosomething,[params-1,params-2,Promise,params-n,...]).then(...)
 * 其中 [Promise,params-1,params-2,...] 等价于 [params-1,params-2,...]
 * @param method
 * @param paramsv
 * @param scope
 * @returns {Promise<any>}
 */
promisify(method,params,scope){
    let index = params.indexOf(Promise);
    if(index<0) {
        index = 0;
    }
    return new Promise((resolve,reject)=>{
        params.splice(index,1,resolve,reject)
        method.apply(scope,params)
    })
},

举个例子

  1. mgr.readFile(filePath,successCallback,errorCallback, isText)
    转换后
      promisify(readFile,[filePath,Promise,isText],mgr)
        .then(....)
        .catch(...)
    
  2. readFile(successCallback,errorCallback,filePath,isText)
    转换后
        promisify(readFile,[filePath,isText])
        .then(....)
        .catch(...)
        
    

相关文章

  • 纯手工打造promisify函数,转换普通回调函数到Promis

    问题 经常会遇到把普通callback形式的函数转换成Promise形式,一般情况下需要在原来函数上嵌套一层壳来实...

  • node核心模块

    Node的核心模块 util.promisify 将普通的回调函数,转换成promise函数 但必须是规范的Nod...

  • javascript回调函数

    javascript回调函数很玄幻。 jquery 中大量使用了回调函数。直到现在才看懂 普通回调函数 匿名回调函...

  • Android使用suspendCancellableCorou

    普通的回调函数: 回调方法,模拟耗时操作 去掉回调,转换为挂起函数:

  • Promise - 06 Promise 相对与纯回调函数的优势

    Promise 相对与纯回调函数的优势 制定调用函数的方式更灵活纯函数必须在启动异步任务前制定回调函数promis...

  • Javascript Promise基础知识

    我们在之前的文章中简述了一下JS中的回调函数以及实现方式浅谈JavaScript的回调函数,其中谈到了promis...

  • JavaScript Promise简介

    我们在之前的文章中简述了一下JS中的回调函数以及实现方式浅谈JavaScript的回调函数,其中谈到了promis...

  • Java进阶之回调机制

    平时经常听别人讲回调函数,听的我一脸懵逼,到底什么是回调函数,回调函数到底该怎么用?下面举例一一说明。 一、回调机...

  • 理解回调函数

    最近经常看到“回调函数”这个概念,但不是很理解。为了弄明白回调函数,提出了以下三个问题:1.什么是回调函数 回调函...

  • 函数指针算法库

    函数指针, 函数指针数组声明 通过参数指定回调函数,代码示例 算法库代码说明 argc:参数个数 argv:回调函...

网友评论

      本文标题:纯手工打造promisify函数,转换普通回调函数到Promis

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