如题,在团队项目里,计划全程async/await,我现在是用bluebird的promisify包一层,然后放在一个fs-promise文件里,但是require的时候很丑啊,而且团队成员也都是习惯了require(‘fs’),再者,node原生的好多,我不能都包一层吧?问问大家都是怎么做的
promisifyAll From Noder
一般会这样去写:var promise = require(‘bluebird’); var fsAsync = promise.promisifyAll(require(‘fs’));
@guohongxing @zhengnz 楼上两位没明白我的意思,我已经这么包了,但是你要变成公共的库供整个团队使用啊,团队成员还都用require(‘fs’),而且怎么把node所有callback的函数都包一遍?
@alsotang 维护者列表有两个死马大大…
只要你promisifyAll fs 是在其他同事之前,他们就不需要在调用promisifyAll 了 require fs 就能直接用async 返回promise 了
@alsotang mz -> thenify-all -> thenify
- https://github.com/thenables/thenify/blob/master/index.js#L44-L62
- https://github.com/thenables/thenify/issues/21 为啥在不需要 eval 的地方, 强行 eval …
@alsotang 我操,这个刁,能不能不加mz前缀?就跟require原生的一样?
@rwing 你同事习惯这么不好,去改他们的习惯吧
@alsotang 额,为什么 ,我也想这么用,现在我自己弄了下,把fs的引用改了。。。整个程序require(‘fs’)都变成promise的了。。。。
如果有些api标准库覆盖不到的话,可以试试这个https://github.com/vincentLiuxiang/gen-async-promise 原理里很简单!
@guohongxing 我如果是非常多的方法,这样用是最好的,推荐
@rwing 你同事坑,你也坑,你把标准库改了,以后你引用的包全都乱。
@alsotang +1 标准库都敢乱来
@alsotang 哈哈哈哈 关键是标准库不出promise的啊,而且也应该不会乱吧?只是promise化了…兼容callback