gpt4 book ai didi

javascript - 如何调用首先发生的函数调用

转载 作者:行者123 更新时间:2023-12-03 01:45:18 25 4
gpt4 key购买 nike

我在 fun1 中有两个函数 fun1() 和 fun2() ,调用 fun2 并返回状态,在此基础上其余代码在 fun1 中工作,但在 fun2 返回 fun1 之前,其余代码已被执行!因为 Node js 是一种基于无阻塞程序代码的!我的案子该如何处理?

    async function isDuplicateUser(emailId)
{
var condition=false;
var con = mysql.createConnection({
host:"localhost",
user: "root",
password: "32577488",
database:"mydb"
});
var sql='SELECT count(*) AS namesCount FROM UserDetails WHERE emailId ="'+emailId+'";';
con.connect(function(err) {
con.query(sql, function (err, result) {
if (err){
throw err;
return ;
}
if(result[0].namesCount>=1)
{
condition=true;
console.log("Upper check :"+condition);
}
});
});
console.log("Lower check :"+condition);
return condition;
}

在记录器中,我首先看到 LowerCheck,然后看到 Upper 检查记录器,请帮助我!

最佳答案

您可以通过以下方式解决此问题:

  1. 回调(仅限纯 ES5 解决方案)
  2. promise (下面是我的解决方案)
  3. 异步函数(也使用 Promise)

因为 Promises 对我来说是最直观的,所以我在 ES6 中使用 Promises 编写了工作解决方案:

const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const mysql = require('mysql');

const connectionConfig = {
host:"localhost",
user: "root",
password: "",
database:"mydb"
}

/** Firstly, connect with DB; so you will be able to share connection */
const conn = mysql.createConnection(connectionConfig);
conn.connect((err) => {
if (err) throw err;

/** After then create server */
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

app.get('/',(req,res) => { res.send(`hello express`) });
app.get('/about',(req,res) => { res.send(`Thank you!`) });

app.post('/signup', (req, res) => {

isDuplicateUser(req.body.email)
.then((userPresent) => {

if(userPresent) {
console.log(`User Already present`);
res.status(409).json({message: `User already present`});
} else {
const query = `INSERT INTO UserDetails (email, password, name) VALUES ('${req.body.email}', '${req.body.password}','${req.body.name}')`;
conn.query(query, function (err, result) {
if (err) throw err;
console.log(`1 record inserted`);
res.status(200).json({message: `1 record inserted`});
});
}

})
.catch((err) => {
console.log(`An unexpected error occurred`);
res.status(500).json({message: `An unexpected error occurred`});
});

});

app.listen(8080, () => console.log('Server running at http://127.0.0.1:8080/') );

function isDuplicateUser(email) {
return new Promise((resolve, reject) => {
const query = `SELECT count(*) AS namesCount FROM UserDetails WHERE email='${email}';`;
conn.query(query, (err, result) => {
if (err) reject(err);
resolve(result[0].namesCount > 0 ? true : false);
});
})
}

});

请注意,我重命名了数据库中的列名称。

我希望这个示例能够帮助您了解如何使用异步代码。

关于javascript - 如何调用首先发生的函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50665993/

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