我正在尝试编写一个通用函数来使用 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/