Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Phantomjs CasperJS evaluate返回一个函数_Phantomjs_Casperjs - Fatal编程技术网

Phantomjs CasperJS evaluate返回一个函数

Phantomjs CasperJS evaluate返回一个函数,phantomjs,casperjs,Phantomjs,Casperjs,如何获取求值以返回回调的返回 ary = @evaluate -> [1, 2, 3] @echo "LENGTH: #{ary.length}" @echo "TYPE: #{ary.constructor}" 产出: LENGTH: undefined TYPE: function LENGTH: 3 TYPE: Array 然后输出函数体,它是Casper的一部分 基于样本,比如我希望ary成为我的数组。我错过了什么 更新: 顺便说一下,这是有效的: ary = eval

如何获取
求值
以返回回调的返回

ary = @evaluate ->
  [1, 2, 3]
@echo "LENGTH: #{ary.length}"
@echo "TYPE: #{ary.constructor}"
产出:

LENGTH: undefined
TYPE: function
LENGTH: 3
TYPE: Array
然后输出函数体,它是Casper的一部分

基于样本,比如我希望
ary
成为我的数组。我错过了什么

更新:

顺便说一下,这是有效的:

ary = eval @evaluate ->
  '[1, 2, 3]'
@echo "LENGTH: #{ary.length}"
@echo "TYPE: #{ary.constructor}"
产出:

LENGTH: undefined
TYPE: function
LENGTH: 3
TYPE: Array
是否必须将
的输出作为字符串(或其他原语)进行封送处理?这不是样品所显示的

更新#2


我正在使用PhantomJS 1.9.1,这可能与此有关,因为我无法在降级到1.9.0后复制问题。

我能够在CasperJS 1.1-dev和PhantomJS 1.9.1上使用以下代码

ary = []
casper.then ->
  ary = @evaluate ->
    [1, 2, 3]

casper.then ->
  @echo "LENGTH: #{ary.length}"
  @echo "TYPE: #{ary.constructor}"
  require('utils').dump(ary)
这将产生以下输出:

LENGTH: 3
TYPE: function Array() {
    [native code]
}
[
    1,
    2,
    3
]

您面临的问题很可能是由于

@echo "LENGTH: #{ary.length}"
@echo "TYPE: #{ary.constructor}"
评估
完成执行之前打印


通过将这两个代码都包装到Casper.then中,您可以避免遇到这些异步问题。

我能够在CasperJS 1.1-dev和PhantomJS 1.9.1上使用以下代码

ary = []
casper.then ->
  ary = @evaluate ->
    [1, 2, 3]

casper.then ->
  @echo "LENGTH: #{ary.length}"
  @echo "TYPE: #{ary.constructor}"
  require('utils').dump(ary)
这将产生以下输出:

LENGTH: 3
TYPE: function Array() {
    [native code]
}
[
    1,
    2,
    3
]

您面临的问题很可能是由于

@echo "LENGTH: #{ary.length}"
@echo "TYPE: #{ary.constructor}"
评估
完成执行之前打印


通过将这两个问题都包装到Casper.then中,您可以避免遇到这些异步问题。

我的示例可能太幼稚了。实际上,我在调用
casper.then
casper.thenOpen
,等等时遇到了这个问题。然而,我使用的是CasperJS 1.0.2,因此这似乎是更可能出现的问题。我现在修复一切的方法是使用PhantomJS 1.9.0。看起来CasperJS<1.1不应该与PhantomJS>=1.9兼容。我的例子可能太天真了。实际上,我在调用
casper.then
casper.thenOpen
,等等时遇到了这个问题。然而,我使用的是CasperJS 1.0.2,因此这似乎是更可能出现的问题。我现在修复一切的方法是使用PhantomJS 1.9.0。看起来CasperJS<1.1不应该与PhantomJS>=1.9兼容。