我在CoffeeScript上有一些代码(在PhantomJS下运行):
class Loadtime
constructor: ->
@page = require('webpage').create()
check: (uri) ->
time = Date.now()
@page.open uri, (status) ->
console.log 'foo'
if 'success' is status
time = Date.now() - time
return time
else
return "FAIL to load #{uri}"
loadtime = new Loadtime()
console.log loadtime.check('http://example.com') # undefined
phantom.exit()
类有构造函数和一个公共方法
行@page.open uri, (status) -> ...
必须调用回调函数,但不调用它(行console.log 'foo'
不执行)。
为什么呢?
答案 0 :(得分:3)
您正在立即呼叫phantom.exit
,因此没有时间加载网页。在check
回调结束时调用的open
函数添加回调,并在传递给phantom.exit
的回调中调用check
:
class Loadtime
constructor: ->
@page = require('webpage').create()
check: (uri, cb) ->
# ...
@page.open uri, (status) ->
# ...
cb()
loadtime = new Loadtime
loadtime.check 'http://www.example.com/', (time) ->
console.log time
process.exit()