最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

for循环内的异步等待,无法使用ssh2访问多个服务器

运维笔记admin10浏览0评论

for循环内的异步/等待,无法使用ssh2访问多个服务器

for循环内的异步/等待,无法使用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 = [
    [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);
    }
})

我的问题是这个:

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

回答如下:

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

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

评论列表(0)

  1. 暂无评论