gpt4 book ai didi

node.js - Nodejs 等待不等待

转载 作者:行者123 更新时间:2023-12-05 07:11:11 24 4
gpt4 key购买 nike

<分区>

我有一个使用 await 的简单 MongoDbB 示例,但出于某种原因,当我使用 await 关键字时代码没有等待...

index.js:

require('dotenv').config()
const utilFunctions = require('./functions')

const getKeywords = utilFunctions.getKeywords

const main = async () => {

const keywords = await getKeywords(process.env.MONGO_URI)

console.log('keywords: ', keywords)

}

main()

functions.js:

var MongoClient = require('mongodb').MongoClient;

const getKeywords = async (uri) => {
console.log('uri is: ', uri)

MongoClient.connect(uri, function (err, db) {
if (err) throw err;

console.log('connected...')

var dbo = db.db("eon-data")

dbo.collection("twitter-keyword-scanner").find({}).toArray(function (err, mainDoc) {
if (err) throw err;

const keywords = mainDoc[0].config.keywordsToLookFor
console.log('got keywords: ', keywords)
db.close()
return keywords
})
})
}


module.exports = {
getKeywords
}

当我运行 node index.js 时,我得到了这个输出:

uri is:  (my mongo uri)
(node:23990) DeprecationWarning: current Server Discovery and Monitoring engine is deprecated, and will be removed in a future version. To use the new Server Discover and Monitoring engine, pass option { useUnifiedTopology: true } to the MongoClient constructor.
keywords: undefined
connected...
got keywords. [
(data in the db)
]

出于某种原因,async/await 无法正常工作...

它确实在日志“got keywords:”中打印关键字,但在 index.js 中它打印“keywords: undefined”并在“getKeywords”返回之前打印它...

我希望 console.log 发生在函数 getKeywords 返回之后,但实际上它是预先运行的。我在这里做错了什么吗?谁能看出异步/等待无法正常工作的原因?

谢谢!

PS- 你可以在这里找到完整的项目:https://github.com/JimLynchCodes/Ameritrader-Bots/tree/master/twitter-keyword-scanner

在 Node v12.16.1 上运行

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com