Node.js 在for循环中使用ssh2异步/等待访问多个服务器不起作用

Node.js 在for循环中使用ssh2异步/等待访问多个服务器不起作用,node.js,npm,ssh2,Node.js,Npm,Ssh2,我有这个工具,可以使用npm库ssh2访问多个服务器。我想在所有这些服务器中循环,以自动更改所有这些服务器中的某个文件。下面是我到目前为止所做工作的代码片段 const c = require('./constants'); const Client = ssh2.Client; const conn1 = new Client(); const conn2 = new Client(); const conn3 = new Client(); const serverTuple = [

我有这个工具,可以使用npm库ssh2访问多个服务器。我想在所有这些服务器中循环,以自动更改所有这些服务器中的某个文件。下面是我到目前为止所做工作的代码片段

const c = require('./constants');

const Client = ssh2.Client;
const conn1 = new Client();
const conn2 = new Client();
const conn3 = new Client();

const serverTuple = [
    [conn1, c.SERVER_1],
    [conn2, c.SERVER_2],
    [conn3, c.SERVER_3]
]

(async () => {
    try {
         serversTuple.forEach(
             async value => await accessServers(value[0], value[1])
         );
    } catch (err) {
         console.log(err);
    }
})
我的问题是:


当我启动程序时,它直接进入服务器3,而不实际处理服务器1和服务器2。有没有一种方法可以让它先等待一台服务器完成,然后再执行下一台服务器?

您应该使用
for
循环,而不是
forEach
,因为
forEach
在调用数组中的下一项之前实际上并不
等待

(async () => {
    try {
        for(let value of serversTuple){
            await accessServers(value[0], value[1])
        }
    } catch (err) {
         console.log(err);
    }
})

您应该使用
for
循环,而不是
forEach
,因为
forEach
在调用数组中的下一项之前实际上不会等待

(async () => {
    try {
        for(let value of serversTuple){
            await accessServers(value[0], value[1])
        }
    } catch (err) {
         console.log(err);
    }
})

您应该使用
for
循环,因为
forEach
实际上并不等待异步函数完成后再调用下一个。
forEach
不支持异步/等待。使用传统的for-loop。您应该使用
for
循环,因为
forEach
实际上不会等到异步函数完成后再调用下一个。
forEach
不支持异步/等待。使用传统的for循环。