这是在节点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

回到顶部