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

クラスには、コンストラクターと 1 つのパブリック メソッドがあります。
@page.open uri, (status) -> ...はコールバック関数を呼び出す必要がありますが、呼び出しません (行console.log 'foo'は実行されません)。なんで?

4

1 に答える 1

3

phantom.exitすぐに呼び出しているため、Web ページをロードする時間がありません。checkコールバックの最後に呼び出す関数にコールバックを追加し、に渡されたコールバック内openで呼び出します。phantom.exitcheck

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 に答える