gpt4 book ai didi

javascript - PhantomJS javascript 等待函数完成

转载 作者:行者123 更新时间:2023-11-28 07:17:46 25 4
gpt4 key购买 nike

我的 PhantomJS 脚本有问题。该脚本从网页获取 JSON 编码的字符串,并用它执行其他操作。脚本:

var address = address;
var amount = 0;

function changeAmount()
{
var page=require('webpage').create();
page.open (address, function(){
//parse json, set amount to something (usually 4)
amount = 4;
});
}

changeAmount();
console.log(amount); //prints 0

//Do stuff with amount

phantom.exit(); //amount not changed yet.

如何在继续之前检查changeAmount函数是否完成?超时是不可能的,因为我不知道处理changeAmount 所需的时间。

最佳答案

page.open() 本质上是一个异步函数。唯一可靠的方法是在 PhantomJS 脚本中使用回调:

var address = address;

function changeAmount(callback)
{
var page = require('webpage').create();
page.open (address, function(){
//parse json, set amount to something (usually 4)
var amount = 4;
callback(amount);
});
}

您甚至可以将 amount 传递到该回调中以删除全局变量。

之后,您将需要使用该回调模式编写脚本。

changeAmount(function(amount){
console.log(amount);

//Do stuff with amount

phantom.exit();
});
<小时/>

此外,您可能不应该在每次调用 changeAmount() 时都创建一个新的页面(如果您重复执行此操作)。您可以重复使用相同的页面。如果您认为创建新页面可以为您提供一个全新的工作环境,那么您就错了。它就像一个新标签。它将使用与您创建的所有其他页面相同的 session 。

如果您经常这样做,这将导致内存泄漏,因为您没有关闭以前打开的页面。

关于javascript - PhantomJS javascript 等待函数完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30663169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com