javascript-使用then()使函数在节点中顺序运行

我想在顺序总线中运行循环功能,该功能总是异步的
有没有什么方法可以使其同步而无需使用回调或任何外部库

文件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库.

上一篇:Java-如何在循环中每n次重复进行换行


下一篇:java-For循环可以在当前迭代中“看到”即将出现的值吗?