Node.js 如何正确使用q
我试图学习如何使用q模块和去噪方法。当我运行代码时,我会在Add中看到控制台日志,但不会记录其他内容。我希望代码也日志添加功能完成。有人能告诉我我的代码哪里出错了吗Node.js 如何正确使用q,node.js,promise,q,Node.js,Promise,Q,我试图学习如何使用q模块和去噪方法。当我运行代码时,我会在Add中看到控制台日志,但不会记录其他内容。我希望代码也日志添加功能完成。有人能告诉我我的代码哪里出错了吗 var Q = require('q') function Add() { var a, b, c a = 5 b = 6 c = a + b console.log("Inside Add()") } var display_promise = Q.denodeify(Add) dis
var Q = require('q')
function Add() {
var a, b, c
a = 5
b = 6
c = a + b
console.log("Inside Add()")
}
var display_promise = Q.denodeify(Add)
display_promise().then(function() {
console.log("Addition function completed")
}, function() {s
console.log("Error")
})
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的其他示例,如Promisify fs.readFile:
从Node v10开始,Node中还内置了一个实验性的基于承诺的fs版本:
const { readFile } = require('fs').promises;
readFile(...).then(...)
还有一个称为util.promisify的q.denodify等价物:
你的代码中没有异步,为什么要使用承诺?Add不接受节点样式的异步回调,因此没有理由将其表示出来。与q模块的其余部分非常相似——实际上,q模块的其余部分是一个非常丰富的通用promise API。事实上,比当今大多数图书馆都要丰富得多,因为Q的开创性工作让我们获得了经验,其中哪些更有用,哪些更少需要。@Bergi fair:
const { readFile } = require('fs').promises;
readFile(...).then(...)
const util = require('util');
const fs = require('fs');
const readFile = util.promisify(fs.readFile);
readFile(...).then(...);