gpt4 book ai didi

javascript - 使用 then() 使函数在 Node 中按顺序运行

转载 作者:搜寻专家 更新时间:2023-10-31 23:44:32 27 4
gpt4 key购买 nike

我想在序列总线中运行循环函数函数总是异步的有什么方法可以在不使用回调或任何外部库的情况下使其同步

文件 1

var db = require('./promiseUnderStanding');

var fun = function () {
for (var i = 0; i < 10; i++) {
db.getFromDb(i, 0);
}
}
fun();

文件2

var mysql = require("mysql");
module.exports = {
getFromDb : function (num1,num2) {
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
database: 'demo'
});
connection.connect();
connection.query('SELECT '+num1+' + '+num2 +' AS solution', function (error, results, fields) {
if (error) {
console.log(err)
}
else {
console.log('The solution is: ', results[0].solution);
}
})
connection.end();
}

}

最佳答案

如果函数是异步的,这意味着它返回一个 Promise。

const myFunc = function(){
return new Promise(function(resolve, reject){
if(failed){
reject(dataSendToCatch);
}if(!failed){
resolve(dataSendToThen);
}
})
};

这几乎与:

const myFunc = async function(){
if(failed) throw new Error();
return dataSendToThen;
};

运行函数后,您可以链接异步甚至同步函数:

myFunc()
.then(function(dataFromResolve){return otherFunc()})
.then(function(dataFromOtherFunc){/*...*/});

对于连续处理、过滤、映射从异步函数接收到的数据是很好的 rxjs图书馆。

关于javascript - 使用 then() 使函数在 Node 中按顺序运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53627714/

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