如何使用 Node.js 中的承诺编写带参数的函数?
How to write a function with arguments using promises in Node.js?
假设我有以下功能:
Person.find({ surname: "Doe" }).only("name", "surname").run(function (err, people) {
});
这是我尝试使用 promises 的方法:
Q.nfcall(Person.find.only('name', 'surname').run, {surname: 'Doe'});
我应该在哪里为使用 promises 的 only()
函数插入参数?
谢谢
only
的论点应该放在它们一直去的地方,就像 find
的论点一样。只有 run
您想通过回调调用并获得承诺:
Q.nfcall(Person.find({ surname: "Doe" }).only("name", "surname").run)
.then(function(people){…}, function(err) {…});
但无论如何你可能不得不使用 Q.ninvoke
:
Q.ninvoke(Person.find({ surname: "Doe" }).only("name", "surname"), "run")
.then(function(people){…}, function(err) {…});
首先,如果您使用的是 Node.js 0.12+ 或 io.js,则无需使用 Q 或其他库来支持 promises,因为它们本身就可用。
其次,您似乎在使用 Mongoose,它本身就支持 promises:http://mongoosejs.com/docs/harmony.html
当你调用 Model.find() 时,它 returns 已经是一个承诺,所以你可以这样做:
var promise = Person.find({ surname: "Doe" }).only("name", "surname")
promise.then(...)
假设我有以下功能:
Person.find({ surname: "Doe" }).only("name", "surname").run(function (err, people) {
});
这是我尝试使用 promises 的方法:
Q.nfcall(Person.find.only('name', 'surname').run, {surname: 'Doe'});
我应该在哪里为使用 promises 的 only()
函数插入参数?
谢谢
only
的论点应该放在它们一直去的地方,就像 find
的论点一样。只有 run
您想通过回调调用并获得承诺:
Q.nfcall(Person.find({ surname: "Doe" }).only("name", "surname").run)
.then(function(people){…}, function(err) {…});
但无论如何你可能不得不使用 Q.ninvoke
:
Q.ninvoke(Person.find({ surname: "Doe" }).only("name", "surname"), "run")
.then(function(people){…}, function(err) {…});
首先,如果您使用的是 Node.js 0.12+ 或 io.js,则无需使用 Q 或其他库来支持 promises,因为它们本身就可用。
其次,您似乎在使用 Mongoose,它本身就支持 promises:http://mongoosejs.com/docs/harmony.html
当你调用 Model.find() 时,它 returns 已经是一个承诺,所以你可以这样做:
var promise = Person.find({ surname: "Doe" }).only("name", "surname")
promise.then(...)