【发布时间】:2021-05-18 23:56:44
【问题描述】:
我正在使用 Puppeteer。传递的变量不起作用。我需要在浏览器的上下文中使用这个变量。这是代码的精简版:
let currentPost = 1;
await page.evaluate(async (currentPost) => {
await new Promise((currentPost, resolve, reject) => {
var timer = setInterval(() => {
console.log(currentPost);
resolve();
}, 100);
});
}, currentPost);
【问题讨论】:
-
它是
new Promise((resolve, reject)。从那里删除currentPost。并且不要await它,返回它 -
另外,您可能在变量阴影方面遇到问题,因为您在不同的上下文中为 3 个变量提供了相同的名称,请尝试在名称方面更具创意;)
-
我假设正在制作副本并在内部使用其独特的引用进行引用。但我会考虑到这一点。谢谢。我会尝试你的建议并回复你。感谢迅速的反应。另外,我正在执行我需要在返回之前完成的承诺中的一些任务,那么,返回新的承诺会按照您的建议实现吗?
-
@RonB OP 在从 Promise 回调参数列表中删除
currentPost后应该没问题,因为整个函数由 Puppeteer 在浏览器上下文中序列化和执行。
标签: javascript node.js async-await puppeteer