callback 转换到 promise

最近项目迭代,从express到koa,面对callback,想偷懒,就想到了Proxy对象

     new Proxy(docker,{
      get : function (obj,name) {
        return function (arg) {
          let length = arguments.length
          if (length<=1) {
            return obj[name]
          }

          arg = Array.prototype.slice(0)
          return new Promise(function(resolve,reject){
            arg[length-1] = function(err,data){
              if(err)return reject(err)
              resolve(data)
            }
          })
        }
      }
    })

有这么一个基本的思路,由于局限较多,而且具体执行如何还是不知,考虑到可能的性能原因,还是用了 bluebird模块。

时间: 2024-11-05 10:30:39

callback 转换到 promise的相关文章

将已经存在的异步请求callback转换为同步promise

由于js是单线程执行,为防止阻塞,会有很多异步回调函数callback,嵌套层次多了,可读性就差了很多.随着社区的发展,出现了promise.我们来将一些常见的回调函数做修改,变成promise的链式调用,简洁,清晰明了. 先理解一点点概念. 每个promise都有三个状态.pending.Fulfilled.Rejected.最初为pending,状态一但改变为Fulfilled.Rejected中的一种,即成永远,不再改变. pending: 等待状态. Fulfilled: 表示成功完成.

如何把 Callback 接口包装成 Promise 接口

最近一段时间一直在看Node.js,在开发过程中经常要调用一些异步接口,通常在接口的最后一个参数会传入一个回调函数,可以用来处理异常,非异常情况.大致模式如下: 1 var fs = require(“fs"); 2 fs.readFile(filename, "binary", function(err, file){ 3 if(err){ 4 //异常情况 5 }else{ 6 //正常情况 7 } 8 }); 但是,这种写法遇上比较复杂的逻辑时,就很容易出现 callb

Callback Promise Generator Async-Await 和异常处理的演进

根据笔者的项目经验,本文讲解了从函数回调,到 es7 规范的异常处理方式.异常处理的优雅性随着规范的进步越来越高,不要害怕使用 try catch,不能回避异常处理. 我们需要一个健全的架构捕获所有同步.异步的异常.业务方不处理异常时,中断函数执行并启用默认处理,业务方也可以随时捕获异常自己处理. 优雅的异常处理方式就像冒泡事件,任何元素可以自由拦截,也可以放任不管交给顶层处理. 文字讲解仅是背景知识介绍,不包含对代码块的完整解读,不要忽略代码块的阅读. 1. 回调 如果在回调函数中直接处理了异

【es6】js原生的promise

JavaScript 是单线程的,这意味着任何两句代码都不能同时运行,它们得一个接一个来.在浏览器中,JavaScript 和其他任务共享一个线程,不同的浏览器略有差异,但大体上这些和 JavaScript 共享线程的任务包括重绘.更新样式.用户交互等,所有这些任务操作都会阻塞其他任务. 一.事件的不足 对于那些执行时间很长,并且长时间占用线程的代码,我们通常使用异步来执行,但是又如何判断其是否执行完毕或者失败呢?我们通常使用事件监听,但事件监听只能监听绑定之后发生的事件,但有可能你写绑定事件代

说说Q.js中的promise的历史

转载自:http://segmentfault.com/a/1190000002591145 Promise核心说明 promise的规范,请百度搜索Prommise/A+规范,promise的核心是有个then方法.在相关术语中,promise指的就是有个 then 方法,且该方法能触发特定行为的对象或函数. 起步:用这一种方法理解Promise 回想一下Promise解决的是什么问题?回调. 例如:函数 doMission1() 代表第一件事情,现在,我们想要在这事情完成后,再做下 一件事情

总结JavaScript编程中的Promise使用

总结JavaScript编程中的Promise使用 Promise核心说明 尽管Promise已经有自己的规范,但目前的各类Promise库,在Promise的实现细节上是有差异的,部分API甚至在意义上完全不同.但Promise的核心内容,是相通的,它就是then方法.在相关术语中,promise指的就是一个有then方法,且该方法能触发特定行为的对象或函数. Promise可以有不同的实现方式,因此Promise核心说明并不会讨论任何具体的实现代码. 先阅读Promise核心说明的意思是:看

ES6的Promise

相信凡是写过javascript的童鞋也一定都写过回调方法(callback),简单说回调方法就是将一个方法func2作为参数传入另一个方法func1中,当func1执行到某一步或者满足某种条件的时候才执行传入的参数func2,例如下面的代码段 // 当参数a大于10且参数func2是一个方法时 执行func2 function func1(a, func2) { if (a > 10 && typeof func2 == 'function') { func2() } } func

JavaScript Promise小结

事件模型是在事件发生之前绑定监听事件,在事件发生时监听到事件的发生. 如果事件发生之后进行绑定监听事件,则监听不到事件的发生. ES6提供的Promise实现了单个值的任意时刻的监听,Rxjs的Observable提供了对一系列值的任意时刻的监听. 所谓的任意时刻,指的是在值发生改变之后进行监听也能监听到变化. 一.何为Promise 所谓promise,就是一个对象,用来传递异步操作的信息.它代表了某个未来才会知道结果的事件(通常是一个异步操作). Promise有自己的生命周期,在定义时,它

Q promise API简单翻译

详细API:https://github.com/kriskowal/q/wiki/API-Reference Q提供了promise的一种实现方式,现在在node中用的已经比较多了.因为没有中文的api,我就简单翻译下吧.鄙人不才,欢迎拍砖... 一.Core Promise Methods 1.promise.then(onFulfilled, onRejected, onProgress) 这个就不说了吧. 2.promise.catch(onRejected) 其等同于:promise.