手写Promisify

//分析可得 promisify函数返回一个函数。返回的这个函数,返回值是Promise对象function promisify(f){return function(...args){return new Promise(function(res,rej){args.push(function(err,data){if(err){rej(err)}else{res(data)}})f(...args);})}}

补充:
node.js中的fs.readFile方法使用说明

实现sleep函数

function f(fn){return function(...args){return new Promise(function(res,rej){fn(()=>{res()},...args); //写成下面的效果一样//fn((err,result)=>{err?reject():resolve()},...args);//node中异步的回调函数有一个约定:error first。//也就是说回调函数的第一个参数一定要是error对象。其余参数才是正确时的数据})}}

或者

 function f(fn){return function(...args){return new Promise(function(res,rej){args.unshift(()=>{res()});fn(...args);})}}

手写Promisify函数相关推荐

  1. JS的手写TRIM函数

    JS的手写TRIM函数 转载于:https://www.cnblogs.com/vibratea/archive/2009/07/24/1530109.html

  2. 3 年大厂工作经验面试竟然要我手写 atoi 函数

    文章目录 前言 我遇到的问题 标准库的实现 适合面试手写的 atoi 实现 参考文献 前言 手写代码是面试过程常见的环节之一,但是一般都是手写算法题,此次面试官要我手写一个基本的 C 语言 atoi, ...

  3. C++之手写strlen函数

    代码: int strlen(const char *str){ assert(str!=NULL); intlen=0; while((*str++)!='\0') len++;return len ...

  4. 手写 bind 函数

    一. 首先bind 函数的三个特点: 1. 改变this指向2. 第一个参数是 this的值后面的参数是 函数接收的参数的值3. 返回值不变 二. 实现第一种:简易版实现 简易版实现 bind 函数 ...

  5. 【面试】手写Power()函数【C++】

    题目:给定一个函数原型,要求实现该函数并且不能使用库函数也不考虑大数问题 函数原型: double Power(double base,int exponent): 代码: #include < ...

  6. 手写memcpy函数

    #include<iostream> #include<cassert> using namespace std;void *memcpy2(void *memTo, cons ...

  7. vue渲染大量数据如何优化_Vue3 Compiler 优化细节,如何手写高性能渲染函数

    送5本<你不知道的 JavaScript 上卷>点我抽奖,祝大家好运 Vue3 的 Compiler 与 runtime 紧密合作,充分利用编译时信息,使得性能得到了极大的提升.本文的目的 ...

  8. 【OpenCV学习笔记】之六 手写图像旋转函数---万丈高楼平地起

    话说,平凡之处显真格,这一点也没错!  比如,对旋转图像进行双线性插值,很简单吧?  可,对我,折腾了大半天,也没有达到预期效果!  尤其是三个误区让我抓瞎好久: 1,坐标旋转公式.   这东西,要用 ...

  9. 手写 call、apply 及 bind 函数

    之前在bind和apply以及call函数使用中详解总结过bind和apply以及call函数的使用,下面手写一下三个函数. 一.首先call函数 Function.prototype.MyCall ...

最新文章

  1. WKWebView自适应大小
  2. 《LeetCode力扣练习》第2题 C语言版 (做出来就行,别问我效率。。。。)
  3. solidity智能合约开发简介
  4. C++ auto 关键字的使用
  5. org manual翻译--2.1 大纲
  6. 带电插拔损坏设备原理_Win10拔U盘不用再点“安全弹出”了,XP和Win7老用户都眼馋了...
  7. MySQL入门之数据完整性约束与表维护
  8. Dubbo服务启动时Caused by: com.alibaba.dubbo.remoting.RemotingException: Failed to bind NettyServer on /19
  9. JAVA对象属性方法的使用
  10. 整体二分——[Poi2011]Meteors
  11. 怎样在VS2013/MFC中使用TeeChart绘图控件
  12. #includesome_file.h和#includemy_file.h的区别
  13. 机房走线槽安装现场需要检查的内容
  14. macOS Monterey 12.0 Beta5 (21A5304g) 虚拟机 ISO 镜像
  15. 重新认识caniuse
  16. 前端和后台BUG区分方法
  17. 情感分析(Emotion Detector)
  18. VTK从分割好的体数据获取等值面的方法(MarchingCube)
  19. 统计学之正态分布检验
  20. C++ Opencv之3D透视变换

热门文章

  1. cesium加载各类地图服务
  2. 【数据结构】先序遍历+中序遍历创建二叉树(C++实现)
  3. html js 去广告,畅言去广告:修改JS引用地址去掉畅言广告
  4. Oracle转换MySql之递归start with
  5. SaaS-HRM中的认证授权
  6. matlab中cos(pi/2)和sin(pi)不等于0的解决方案
  7. EduCoder-程序设计技术R-循环结构程序设计2-(第1关:C循环-求平均成绩)(第2关:C循环-求各位数字)(第3关:C循环-求阶乘之和)(第4关:C循环-水仙花数)(第5关:C循环
  8. linux mint 18.3 内核,Linux Mint 18.3 “Sylvia” Cinnamon 和 MATE版发布可下载
  9. 【板栗糖GIS】在测绘项目中——比例尺和分辨率的区别
  10. 用python爬取《龙岭迷窟》评论,看看比同系列鬼吹灯作品以及《盗墓笔记》好在哪里?