denodify
имеет смысл только для функций, которые используют типичный Node.js для принятия функции обратного вызова, поскольку эти функции выполняют асинхронные операции. Функция Add
не выполняет ни одного.
Вы можете переписать его, чтобы принять обратный вызов, который будет вызван по завершении:
function Add(callback) {
var a, b, c
a = 5
b = 6
c = a + b
console.log("Inside Add()")
callback();
}
Однако, строго говоря, это не имеет большого смысла, потому что Add
все еще выполняет только синхронный код.
Вы также можете добавить к нему некоторую асинхронность:
function Add(callback) {
console.log("Inside Add()")
setTimeout(function() {
var a, b, c
a = 5
b = 6
c = a + b
callback();
}, 2000);
}
В документации Q показан другой пример q.denodify
, например обещание fs.readFile
:
var readFile = Q.denodeify(fs.readFile);
readFile("foo.txt", "utf-8").then(...);
Начиная с Node v10, есть также (экспериментальная) версия fs
на основе обещаний, встроенная в Node:
const { readFile } = require('fs').promises;
readFile(...).then(...)
А также эквивалент q.denodify
, называемый util.promisify
:
const util = require('util');
const fs = require('fs');
const readFile = util.promisify(fs.readFile);
readFile(...).then(...);