Promise是JavaScript中一种常用的异步处理的方式,它可以有效地避免回调地狱。那么promisify
是什么意思呢?在英语中ify
结尾的单词一般为动词,表示“使……化”,那么很显然promisify
就是“使Promise化”,通俗一点就是把回调函数转化为Promise这种形式。
promisify
promisify
的代码相对来说比较简单,这里直接给出代码:
1 | function promisify(fn) { |
假设我们在node中的fs.readFile
方法上使用它,那么有:
1 | const fs = require('fs') |
unpromisify
由于Promise比回调方式更优雅,所以很少有人会把Promise再转回回调方法,在讲unpromisify
之前我们先写一个Promise版本的delay
函数:
1 | function delay(timeout) { |
现在定义一个unpromisify
函数,将delay
函数改成回调函数的版本:
1 | function unpromisify (p, done) { |
现成的promisify
node的util模块提供了promisify
函数,可以直接拿来使用。由于很少需要unpromisify
,所以该模块中并没有提供unpromisify
。
1 | const fs = require('fs') |