请教下async/await如何应用在http.request的业务中?
发布于 7 年前 作者 wldlzt 13693 次预览 最后一次回复是 7 年前 来自 问答
目前async/await已经在开发上全面使用,但遇到一个很具体的技术问题,代码如下 var post_req = http.request(post_option, function(resa){ resa.on(‘data’, function(buffer){ ret += buffer.toString(); }); resa.on(‘end’, function(){ console.log(ret); }); }); post_req.write(post_data); post_req.end();
想问的是我如何把上述代码利用async/await包装在一个fn函数里,直接通过调用函数var ret=fn();就能获取到ret的输出结果?
12 回复
这样是否能够满足你的需求呢?
来自于 bs32g1038 LIZCBLOG博客
@bs32g1038 谢谢,可以~~~
@bs32g1038 不好意思,用上Promise还是无法直接封装函数并返回请求结果,有没办法只用async/await的呢?
貌似你的代码有问题,ret在哪里定义过?
@fantasticsoul 谢谢您先~~~~ret是我定义少了…然后您发的代码我试运行了一下,是报promisify(…)(…) is not a function的错误,当然我也去了解了promisify的用法,正在摸索中,您发的代码是少了什么吗?
@wldlzt 示例代码:
@bs32g1038 谢谢谢谢代码没问题,但我发现业务上是我自己设计思路搞错了…
请直接使用 httpx、urllib 之类的模块。
原生模块用起来比较麻烦… 优先考虑 fetch request(promisify 版本) urllib 等
@wldlzt 你的node不是v8版本吗?v8.*才有 promisify方法在util里
考虑下这个? https://github.com/request/request-promise-native
我自己也封装了一个,可以参考下。 https://github.com/LeoHughes/InterfaceProxy