从侦听器异步获取结果
Get result from listener async
我使用 puppeteer-cluster + node js。我是新来的。
我有点麻烦。
我需要从正在收听页面的 site.I 获得 XHR 响应,但我无法将结果值写入变量。我需要在代码的另一部分使用该值。
如何在侦听器中等待函数执行并将结果写入变量?
dataCreation = [];
function get_data (data){
dataCreation [id] = data;}
await page.on('response', async (response) =>{
if (response.url === 'your_url'){
let XHR_response = await response.json();
let array_lenght = (XHR_response).length;
let data2 = XHR_response.objects[array_lenght-1].creationDate;
get_data(data2);}});
await console.log(dataCreation [id];
但 dataCreation [id] 是不败的。因为我需要等待听众并从中得到结果。我该怎么做?谢谢。
像这样:
const XHR_response = await new Promise((resolve) => {
page.on('response', checkResponse);
function checkResponse(response) {
if (response.url() === 'your_url') {
page.off('response', checkResponse);
resolve(response.json());
}
}
});
let array_lenght = XHR_response.objects.length;
let data2 = XHR_response.objects[array_lenght-1].creationDate;
get_data(data2);
console.log(dataCreation[id]);
我使用 puppeteer-cluster + node js。我是新来的。 我有点麻烦。 我需要从正在收听页面的 site.I 获得 XHR 响应,但我无法将结果值写入变量。我需要在代码的另一部分使用该值。 如何在侦听器中等待函数执行并将结果写入变量?
dataCreation = [];
function get_data (data){
dataCreation [id] = data;}
await page.on('response', async (response) =>{
if (response.url === 'your_url'){
let XHR_response = await response.json();
let array_lenght = (XHR_response).length;
let data2 = XHR_response.objects[array_lenght-1].creationDate;
get_data(data2);}});
await console.log(dataCreation [id];
但 dataCreation [id] 是不败的。因为我需要等待听众并从中得到结果。我该怎么做?谢谢。
像这样:
const XHR_response = await new Promise((resolve) => {
page.on('response', checkResponse);
function checkResponse(response) {
if (response.url() === 'your_url') {
page.off('response', checkResponse);
resolve(response.json());
}
}
});
let array_lenght = XHR_response.objects.length;
let data2 = XHR_response.objects[array_lenght-1].creationDate;
get_data(data2);
console.log(dataCreation[id]);