我有一个带有Flash方法的Router(Liste_routeur_wifi)对象列表,该对象启动新图像的刷新,并在完成后返回一个Promise。 我正在通过Wifi连接到路由器,所以只能一一完成。
我为您提供了列表中2个路由器(索引0和1)的一个(有效的)示例,但是我想将其用于N个路由器,我不知道如何。
如果有人可以告诉我,这将非常有帮助。
wifi.connect({
ssid: Liste_routeur_wifi[0].ssid,
password: Liste_routeur_wifi[0].password
}, async function(err) {
if (err) {
console.log(err);
} else {
//If im connected
console.log('Connexion établie');
//flash method return a promise with the flashed router Liste_routeur_wifi[0].flash(browser).then(function(routeurflash0) {
console.log(routeurflash0);
//when the promise is complete, i wouldlike to go to the next router
wifi.connect({
ssid: Liste_routeur_wifi[1].ssid,
password: Liste_routeur_wifi[1].password
}, async function(err) {
if (err) {
console.log(err);
} else {
console.log('Connexion établie'); Liste_routeur_wifi[1].flash(browser).then(function(routeurflash1) {
console.log(routeurflash1);
})
}
});
答案 0 :(得分:4)
递归如何?
也许不是100%正确地满足您的需求,但是
connectWifi(0, routerAmount);
function connectWifi(index, n){
wifi.connect({
ssid: Liste_routeur_wifi[index].ssid,
password: Liste_routeur_wifi[index].password
}, function(err) {
if (err) {
console.log(err);
} else {
console.log('Connexion établie');
Liste_routeur_wifi[index].flash(browser).then(function(routeurflash) {
console.log(routeurflash);
if(index <= n){
return connectWifi(index++, n);
} else {
return true;
}
})
}
});
}
答案 1 :(得分:2)
您有2个选择。
如果您可以并行执行,则可以使用Promise.all
提供您想要的步骤:
return Liste_routeur_wifi.reduce(
(current, next) =>
current
.then(t => next.flash())
.catch(err => {console.log(err);}),
Promise.resolve(),
)