Javascript 执行函数的值返回一个承诺
我有这段代码,在第二个函数中,我检查db,如果我在函数中记录东西,它会记录良好,但是如果我分配一个var并调用函数,当它返回true或false时,我会得到一个挂起的承诺Javascript 执行函数的值返回一个承诺,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我有这段代码,在第二个函数中,我检查db,如果我在函数中记录东西,它会记录良好,但是如果我分配一个var并调用函数,当它返回true或false时,我会得到一个挂起的承诺 const mongoose = require('mongoose') const config = require('./config.json') const schema = require('./data') const mongoactivate = async(config) => { await mo
const mongoose = require('mongoose')
const config = require('./config.json')
const schema = require('./data')
const mongoactivate = async(config) => {
await mongoose.connect(config.mongo, {
useUnifiedTopology: true,
useNewUrlParser: true
})
}
mongoactivate(config)
const check = async(p, q) => {
let data = await schema.findOne({
username: p,
pass: q
})
let cor = (data === null) ? false : true;
console.log(cor)
}
const ans = check("p", "q")
console.log(ans)
您在使用async/await时遇到了问题。您必须先等待mongoactivate(config)和检查('p','q')。尝试写入等待这些函数
祝你好运,我的g你在使用async/await时遇到了麻烦。您必须先等待mongoactivate(config)和检查('p','q')。尝试写入等待这些函数
祝你好运,我的g你没有在等待
mongoactivate()
函数。异步函数总是返回一个承诺。另外,您的check
函数从不返回任何内容,因此ans
将不是您期望的值。在函数末尾返回cor
变量
const mongoose = require('mongoose')
const config = require('./config.json')
const schema = require('./data')
const mongoactivate = async (config) => {
await mongoose.connect(config.mongo, {
useUnifiedTopology: true,
useNewUrlParser: true
})
}
const check = async (p, q) => {
let data = await schema.findOne({
username: p,
pass: q
})
let cor = (data === null) ? false : true;
return cor;
}
(async () => {
await mongoactivate(config)
const ans = await check("p", "q")
console.log(ans)
})()
您没有在等待
mongoactivate()
函数。异步函数总是返回一个承诺。另外,您的check
函数从不返回任何内容,因此ans
将不是您期望的值。在函数末尾返回cor
变量
const mongoose = require('mongoose')
const config = require('./config.json')
const schema = require('./data')
const mongoactivate = async (config) => {
await mongoose.connect(config.mongo, {
useUnifiedTopology: true,
useNewUrlParser: true
})
}
const check = async (p, q) => {
let data = await schema.findOne({
username: p,
pass: q
})
let cor = (data === null) ? false : true;
return cor;
}
(async () => {
await mongoactivate(config)
const ans = await check("p", "q")
console.log(ans)
})()
您需要知道如何使用wait/async,JS不像C#或C 如果您对此仍有一些问题,我建议您解决以下示例中的承诺:
const Afunction = async(p,q)=> {
let ThePromise = new Promise((resolve,reject) => {
//resolve the pending promise that you got
let data = await schema.findOne({
username: p,
pass: q
})
let cor = (data === null) ? false : true;
resolve(cor)
})
return ThePromise.then(val=> {return val} )
}
然后,您可以通过以下方式获得结果:
const TheValueIwant = await Afunction ("p","q");
您需要知道如何使用wait/async,JS不像C#或C 如果您对此仍有一些问题,我建议您解决以下示例中的承诺:
const Afunction = async(p,q)=> {
let ThePromise = new Promise((resolve,reject) => {
//resolve the pending promise that you got
let data = await schema.findOne({
username: p,
pass: q
})
let cor = (data === null) ? false : true;
resolve(cor)
})
return ThePromise.then(val=> {return val} )
}
然后,您可以通过以下方式获得结果:
const TheValueIwant = await Afunction ("p","q");
但是,由于整个索引不是异步的,等待函数调用需要异步,如果我在check函数中记录cor,它的日志会正确,但是由于整个索引不是异步的,等待函数调用需要异步,如果我在check函数中记录cor,它的日志会正确