简体   繁体   English

js中传统回调函数如何轻松实现asyn/await

[英]How to easily make asyn/await works with the traditional callback function in js

As we know, ES6 give us a great solution for callback hell, but how to handle the source which already wrote withe call back?众所周知,ES6 给了我们一个很好的回调地狱的解决方案,但是如何处理已经写好的带有回调的源代码呢? I don't want to rewrite those code, just want to get a easy way to make it works.我不想重写那些代码,只想找到一种简单的方法来让它工作。

  1. A helper function辅助功能

    function promise(this_obj, func, ...restArgs) { return new Promise((resolve, reject) => { restArgs.push((err,result)=>{ if(err){ reject(err); }else{ resolve(result); } }); func.apply (this_obj, restArgs); }); function promise(this_obj, func, ...restArgs) { return new Promise((resolve, reject) => { restArgs.push((err,result)=>{ if(err){ reject(err); }else{解决(结果);}});func.apply(this_obj,restArgs);}); } }

  2. Before

     redis.hget("k1", "k2", function (err, result) { if (err) { reject(err); } else { resolve(result); } });
  3. Now现在

    var result = await promise(redis, redis.hget, "k1", "k2"); var result = await promise(redis, redis.hget, "k1", "k2");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM