Как я могу отличить $ _ во вложенных операторах списка в Perl?

Я понимаю, что рекурсия настолько опасна, что я не знаю, может ли эта техника вызвать проблемы, когда количество обещаний / вызовов увеличивается. На ум приходят вопросы о накладных расходах и управлении памятью

blockquote>

Рекурсивные подходы к вызовам с обещаниями, подобным вашему getUserList, в порядке .

Единственная возможная проблема с памятью заключается в том, что ваш allUsersTemp массив может расти очень большим, пока он не превысит пределы вашего браузера. Однако задолго до этого вы должны задаться вопросом: будет ли полезно отображать сотые тысячи записей пользователей в одной большой таблице? В тех масштабах, когда память станет проблематичной, вам понадобятся более эффективные инструменты для управления вашей пользовательской базой, чем просто перечисление всех из них.

Что касается стиля кода, я бы рекомендовал не объявлять allUsersTemp и paginationToken как изменяемые переменные более высокого уровня. Вместо этого задайте им параметры вашей рекурсивной функции и выполните обещание с результатом:

function getUserList (paginationToken, allUsersTemp = []) => {
//                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  return tempUserTest = CognitoIdentityServiceProvider.listUsersAsync({
    UserPoolId: process.env.COGNITO_USER_POOL_ID,
    PaginationToken: paginationToken
  }).then(tempUser => {
    const allUsers = allUsersTemp.concat(tempUser.Users);
    const nextToken = tempUser.PaginationToken;
    if (nextToken) {
      return getUserList(nextToken, allUsers);
//                       ^^^^^^^^^^^^^^^^^^^
    } else {
      return allUsers;
//           ^^^^^^^^
    }
  });
}

Promise.all дождался выполнения обоих обещаний

blockquote>

Нет, Вы передавали массив только с одним обещанием Promise.all и вызывали вторую функцию после завершения первой. Чтобы запустить одновременно, он должен выглядеть как

return Promise.all([
  CognitoIdentityServiceProvider.listUsersInGroupAsync(adminParams),
  getUserList()
]).then(([{ Users: adminUsers }, allUsers]) => {
  …
});
18
задан brian d foy 12 February 2009 в 22:34
поделиться