元素句柄的操纵up循环不起作用

时间:2018-07-26 17:45:05

标签: javascript node.js puppeteer

我已经在一个单独的类中编写了一个函数,以便在元素句柄数组的所有元素句柄中输入文本

public async enterAllElementText(elements: ElementHandle[], text: string): Promise<any> {
    try {

        const texts = await elements.map(async (element: ElementHandle) => {
            await element.focus();
            await element.type('');
            await element.type(text);
            await this.enterKeys('Enter');
            await this.page.waitFor(500);
        });
        await Promise.all(texts);
    } catch (Exception) {
        console.error(chalk.red('\nFailed to enter Text!' + '\n' + Exception.toString()) + '\n');
        process.exit(0);

    }
}

然后这样称呼它:

(async() => {

const texts = await page.$$(locators.texts);

await classInstance.enterAllElementText(texts, 'someText');
console.log('All texts entered!');

})();

但是由于某种原因它无法按预期执行,我知道这是承诺执行的问题,因为console语句总是首先执行!我在这里做什么错了?

我也知道mapfor of应该与async一起使用,并分别等待异步函数的并行和顺序执行!

0 个答案:

没有答案