我听说Promise适用于Node核心API。例如,对于fs,我们如何使用Promise,是否仅省略了回调?
fs.readFile(file).then(v => console.log(v));
Run Code Online (Sandbox Code Playgroud)
或我们如何使用?
目前,对于早于10的Node.js版本,我想这是一个标志吗?也许:node --promises?
到目前为止,大多数基于Node回调的API都应手动进行承诺,以便使用Promise。
util.promisify是可用的,因为节点8(也polyfillable),并允许对任何promisify的API,使用错误第一回调,包括内置fs:
const { promisify } = require('util');
const fs = require('fs');
const readFile = promisify(fs.readFile);
readFile(file).then(console.log);
Run Code Online (Sandbox Code Playgroud)
一些使用非错误优先回调的API也通过util.promisify.custom符号支持它,例如setTimeout:
promisify(setTimeout)(100).then(...);
Run Code Online (Sandbox Code Playgroud)
fs.promises实验API是可用的,因为节点10(polyfillable在节点8和更高的),并包含promisified fs模块,如已经在另一问题中提到:
const fsp = require('fs').promises;
fsp.readFile(file).then(console.log);
Run Code Online (Sandbox Code Playgroud)
对于批量承诺,pify可以使用第三方工具。
第三方承诺包可用于大多数内置且流行的基于第三方回调的包,这些包可以转换为Promise,例如fs-extra,这是首选包的替代,fs其中包括必需graceful-fs包。
| 归档时间: |
|
| 查看次数: |
733 次 |
| 最近记录: |