-1

我在 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()

类有构造函数和一个公共方法。
Line@page.open uri, (status) -> ...必须调用回调函数,但它不调用它(lineconsole.log 'foo'不执行)。为什么?

4

1 回答 1

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()
于 2013-06-03T00:53:24.003 回答