小编dan*_*ong的帖子

Puppeteer - 在 page.select() 之后等待网络请求完成

有没有办法在页面上执行操作后等待网络请求解析,然后再在 Puppeteer 中执行新操作?

我需要与页面上的选择菜单进行交互,page.select()这会导致动态图像和字体加载到页面中。我需要等待这些请求完成才能执行下一步操作。

--

注意事项:

  1. 我无法重新加载页面或转到新网址。
  2. 我不知道请求类型可能是什么,也不知道有多少

--

// launch puppeteer
const browser = await puppeteer.launch({});

// load new page
const page = await browser.newPage();

// go to URL and wait for initial requests to resolve
await page.goto(pageUrl, {
  waitUntil: "networkidle0"
});

// START LOOP
for (let value of lotsOfValues) {

  // interact with select menu
  await page.select('select', value);

  // wait for network requests to complete (images, fonts)
  ??

  // screenshot page with new content
  await pageElement.screenshot({ …
Run Code Online (Sandbox Code Playgroud)

javascript node.js puppeteer

5
推荐指数
1
解决办法
2万
查看次数

Cannon.js - 如何防止块抖动/摇晃?

我将 Cannon.js 与 Three.js 一起使用。我设置了一个场景,其中有 5 列,每列 4 个块堆叠在一起。

我希望它们能够与我计划添加到场景中的其他对象进行交互。然而,列中的块似乎会引起大量的微碰撞,并且随着时间的推移,抖动会偏离位置。我希望他们在与他们互动之前保持完全一致。

如果您查看 codepen 并等待大约 20/30 秒,您将看到块开始移动。我需要在这些块上设置一些特定的东西来防止这种情况发生吗?

这是我整理的一个示例 - https://codepen.io/danlong/pen/XxZROj

顺便说一句,当场景中存在我没有预料到的这些块时,性能也会出现相当大的下降。我计划向场景中添加更多对象,但不确定为什么性能会下降?

这与我的 animate() 循环中的以下内容有关吗?

this.world.step(1 / 30);
Run Code Online (Sandbox Code Playgroud)

专门设置我的“大炮世界”和“列”的代码如下:

大炮世界:

this.world = new CANNON.World();

this.world.defaultContactMaterial.contactEquationStiffness = 1e6;    
this.world.defaultContactMaterial.contactEquationRegularizationTime = 3;

this.world.solver.iterations = 20;

this.world.gravity.set(0,-25,0);

this.world.allowSleep = true;

this.world.broadphase = new CANNON.SAPBroadphase(this.world);
Run Code Online (Sandbox Code Playgroud)

列:

var geometry = new THREE.BoxBufferGeometry(5,5,5);
var material = new THREE.MeshNormalMaterial();
var shape = new CANNON.Box(new CANNON.Vec3(5/2, 5/2, 5/2));

for (var rows = 0, yPos = 2.5; rows < 4; rows++, yPos+=5) …
Run Code Online (Sandbox Code Playgroud)

game-physics three.js cannon.js

2
推荐指数
1
解决办法
1632
查看次数