javascript - 如何在不确定数组上使用 Promise all

标签 javascript node.js es6-promise puppeteer

我正在尝试编写一个通用函数来使用 puppeteer 填写表单。在非通用版本中,我做了这样的事情:

function fillSpecificForm(values) {

  return Promise.all([
    page.$eval('#selector1', (el, values) => el.value = values[0], values),
    page.$eval('#selector2', (el, values) => el.value = values[1], values),
    page.$eval('#selector3', (el, values) => el.value = values[2], values),
  ])

}

我希望通用版本看起来像这样。

function fillAnyForm(selectors, values) {

  if(!isArray(selectors)) throw 'Parameter "selectors" must be an array'
  if(!isArray(values)) throw 'Parameter "values" must be an array'

  nPromises = Math.min(selectors.length, values.length)
  promises = []

  for(let i = 0; i < nPromises; i++) {
      promises.push(new Promise(/* This is the part I don't get */))
  }

  return Promise.all(promises);

}

而且我无法全神贯注于生成抽象的 promise 。因此非常感谢您的帮助

最佳答案

您不需要 new Promise(),只需使用 page.$eval() 的返回值,就像在非泛型版本中一样.

for(let i = 0; i < nPromises; i++) {
    promises.push(page.$eval(selectors[i], (el, value) => el.value = value, values[i]))
}

关于javascript - 如何在不确定数组上使用 Promise all,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58820132/

相关文章:

javascript - 在 Reactjs 中创建依赖字段?

javascript - 为什么我的 Javascript 核心不工作?

javascript - 一旦用户到达页面上的特定点,自动滚动到特定点/ anchor

javascript - 在 node.js 中将数组定义为环境变量

javascript - 如何正确处理 Promise 链中的错误?

javascript - ionic 重定向

node.js - Kafka Node - BrokerNotAvailableError

javascript - NodeJS错误: Cannot GET/from running the url on the web browser

javascript - javascript ( ES6 ) 中的 promise

node.js - JS Promise在nodejs版本之间的执行顺序不一致