等待在异步承诺 node.js 中不起作用

时间:2021-01-28 12:35:00

标签: javascript node.js axios puppeteer

我在 node.js 中使用带有 Axios 的 puppeteer 编写了这段代码,它发出 POST 请求,获取响应并在 puppeteer 中使用该响应。

card = axios
            .post('https://example.com/post', {
                email: emailVal,
                password: passwordVal
            })
            .then(async (res) => {
                console.log(`STATUS CODE: ${res.data.statusCode}`)
                let cardName = res.data.cardholder.name.split(" ")[0];
                let cardLastname = res.data.cardholder.name.split(" ")[1];
                let cardAddress = res.data.cardholder.billing.address.line1;
                await page.waitFor(1000);
                console.log('REDIRECTED TO ADDRESS')
                await page.goto('https://example.com/address');
                //await page.waitForNavigation({ waitUntil: 'networkidle0' }); // Wait for page to finish loading
                await page.waitFor(10000);
                await Promise.all([
                    await page.evaluate(()=>document.querySelector('#mobile-container > div > div > form > div > div:nth-child(2) > div > div > div.mex-add-new-payment-container.mt9-sm.flx-jc-md-fe.u-full-width.ta-sm-c.pt6-sm.pb6-sm.d-sm-flx.flx-jc-sm-c > div.flx-jc-md-fe.d-sm-h.d-md-flx.flx-jc-sm-c > button').click())
                ]);
                
                console.log("OPENED ADDRESS POPUP")
                await page.waitFor(10000);

                const typeFirstName = await page.$('#givenName');
                await typeFirstName.click({ clickCount: 3 })
                await page.type('#givenName', cardName);
                console.log('CARD NAME: ' + cardName)

                console.log('CARD ADDRESS: ' + cardAddress)

          

             

                await page.waitFor(5000);
                const saveCard = await page.$('#modal-root > div > div > div > div > section > div.css-1h4dz32.e1eje3q30 > div > div > button');
                await saveCard.click({ clickCount: 1 })
                console.log('CLICKED SAVE')
            })
            .catch(error => {
                console.error(error)
            });

.then(async (res) 中的这部分代码被忽略了(就像它不存在一样)

console.log(`STATUS CODE: ${res.data.statusCode}`)
                let cardName = res.data.cardholder.name.split(" ")[0];
                let cardLastname = res.data.cardholder.name.split(" ")[1];
                let cardAddress = res.data.cardholder.billing.address.line1;
                await page.waitFor(1000);
                console.log('REDIRECTED TO ADDRESS')
                await page.goto('https://example.com/address');
                //await page.waitForNavigation({ waitUntil: 'networkidle0' }); // Wait for page to finish loading
                await page.waitFor(10000);
                await Promise.all([
                    await page.evaluate(()=>document.querySelector('#mobile-container > div > div > form > div > div:nth-child(2) > div > div > div.mex-add-new-payment-container.mt9-sm.flx-jc-md-fe.u-full-width.ta-sm-c.pt6-sm.pb6-sm.d-sm-flx.flx-jc-sm-c > div.flx-jc-md-fe.d-sm-h.d-md-flx.flx-jc-sm-c > button').click())
                ]);
                
                console.log("OPENED ADDRESS POPUP")
                await page.waitFor(10000);

                const typeFirstName = await page.$('#givenName');
                await typeFirstName.click({ clickCount: 3 })
                await page.type('#givenName', cardName);
                console.log('CARD NAME: ' + cardName)

                console.log('CARD ADDRESS: ' + cardAddress)

          

             

                await page.waitFor(5000);
                const saveCard = await page.$('#modal-root > div > div > div > div > section > div.css-1h4dz32.e1eje3q30 > div > div > button');
                await saveCard.click({ clickCount: 1 })
                console.log('CLICKED SAVE')

你知道我做错了什么吗?我无法在 then 函数之前删除 async,所以我在这一点上卡住了。

0 个答案:

没有答案