跳到主要内容
CNode

把原生fs模块包装成promise的最佳实践是什么?

问答
Rrwing发布于 10 年前最后回复 10 年前
1564800

如题,在团队项目里,计划全程async/await,我现在是用bluebird的promisify包一层,然后放在一个fs-promise文件里,但是require的时候很丑啊,而且团队成员也都是习惯了require('fs'),再者,node原生的好多,我不能都包一层吧?问问大家都是怎么做的

查看回复

回复 (15)

R
rwing#1510 年前
引用 alsotang@rwing 你同事坑,你也坑,你把标准库改了,以后你引用的包全都乱。

@alsotang 哈哈哈哈 关键是标准库不出promise的啊,而且也应该不会乱吧?只是promise化了.....兼容callback

I
i5ting#1210 年前
引用 guohongxing一般会这样去写:var promise = require('bluebird'); var fsAsync = promise.promisifyAll(require('fs'));

@guohongxing 我如果是非常多的方法,这样用是最好的,推荐

V
vincentLiuxiang#1110 年前

如果有些api标准库覆盖不到的话,可以试试这个https://github.com/vincentLiuxiang/gen-async-promise 原理里很简单!

R
rwing#1010 年前
引用 alsotang@rwing 你同事习惯这么不好,去改他们的习惯吧

@alsotang 额,为什么 ,我也想这么用,现在我自己弄了下,把fs的引用改了。。。整个程序require('fs')都变成promise的了。。。。

A
alsotang#910 年前
引用 rwing@alsotang 我操,这个刁,能不能不加mz前缀?就跟require原生的一样?

@rwing 你同事习惯这么不好,去改他们的习惯吧

R
rwing#810 年前
引用 alsotanghttps://npm.taobao.org/package/mz

@alsotang 我操,这个刁,能不能不加mz前缀?就跟require原生的一样?

M
magicdawn#710 年前

@alsotang mz -> thenify-all -> thenify

C
chita#610 年前

只要你promisifyAll fs 是在其他同事之前,他们就不需要在调用promisifyAll 了 require fs 就能直接用async 返回promise 了

D
DevinXian#510 年前
引用 alsotanghttps://npm.taobao.org/package/mz

@alsotang 维护者列表有两个死马大大...

R
rwing#310 年前
引用 guohongxing一般会这样去写:var promise = require('bluebird'); var fsAsync = promise.promisifyAll(require('fs'));

@guohongxing @zhengnz 楼上两位没明白我的意思,我已经这么包了,但是你要变成公共的库供整个团队使用啊,团队成员还都用require('fs'),而且怎么把node所有callback的函数都包一遍?

G
guohongxing#210 年前

一般会这样去写:var promise = require('bluebird'); var fsAsync = promise.promisifyAll(require('fs'));

Z
zhengnz#110 年前

promisifyAll From Noder

参与回复

登录后即可参与回复。登录