Вместо обратного вызова forEach
используйте for
l oop, чтобы вы оставались во внешней функции async
, и несколько await
будут ожидать один за другим:
for (let element of value.removeAppsList) {
await shellExec('adb shell pm uninstall -k --user 0 ' + element).then(function (result) {
console.log('Removing ' + element + ' - ' + result.stdout);
});
}
И не используйте async
в качестве then
функции обратного вызова. Вам нужно async
, только когда вы планируете использовать await
в этой функции.
Помните, что когда вы вызываете функцию async
, она возвращается в тот самый момент, когда обрабатывает await
. Это не ждет, прежде чем вернуться. Но как только ожидаемое обещание разрешается (и стек вызовов пуст), этот контекст функции восстанавливается, и выполнение продолжается до следующего await
, ... et c.