这是在节点js做代码的方式吗?
那么,我是新的节点js。我想知道我的编码结构。我问这个问题,因为我写很多的回报,它看起来奇怪,我一点时间这是在节点js做代码的方式吗?
setTimeout(() => { return _db.collection(_encycUsers).findOne(
// search basis.
{"_id" : require("mongodb").ObjectId(_userId)}).then(
// on a successful search.
(_encycUsersData) => {
// if return is not empty.
if(!(_help.isEmpty(_encycUsersData))) {
return _db.collection(_encycUsers).updateOne(
// search basis.
{"_id" : require("mongodb").ObjectId(_encycUsersData["_id"])}, {
"$unset" : {"_otp" : _otp, "_state" : ["request.otp.sent", "request.otp.delete"]},
"$set" : {"_state" : "request.otp.reSent"}
}).then(
// on successful encyc update.
() => {
_debug(_encycUsersData);
// search user after successful otp delete.
return _db.collection(_encycUsers).findOne(
// search basis.
{"_id": require("mongodb").ObjectId(_encycUsersData["_id"])}).then(
// on successful user search.
(_encycUsersFindData) => {
...
回答:
你return语句似乎是无用的。 在
setTimeout(function, timeout)
函数的返回值基本上是忽略不计。 而在你的代码中,你的函数返回并不有趣。有趣的是,您调用的查找和更新方法会返回承诺,您可以在这些承诺上调用then
方法。
所以,去掉return语句,用这样的代码
setTimeout(() => { function1().then((result) => {
function2(something_based_on_result).then((result2 => {...})
})}, 1000)
结束了是一种常见的JavaScript做法。 有多种方法可以缩短这些链条的长度。 如果您使用节点超过7.6时,您可以使用异步功能和写的东西,如:
async function foo(){ let result = await function_returning_promise() #calls then on the promise under the covers
let result2 = await function2(data_based_on_result)
}
而且在几年异步模式将是相当普遍的。今天,当时的连锁系列往往是人们写的。
以上是 这是在节点js做代码的方式吗? 的全部内容, 来源链接: utcz.com/qa/258335.html