2014-02-22 54 views
0

使用eachThen API網址我試圖利用在casperJS新的1.1 eachThen()API的但是我發現它的一些奇怪的行爲的列表。不能動態地設置CasperJS

下面遵循一個簡單的應用程序

var casper = require('casper').create({ 
    verbose: true, 
    logLevel: "error" 
}); 
var urls = ['http://google.com/']; 

casper.start(); 

var testvar = ""; 

casper.then(function() { 
    urls = ['http://yahoo.com/', 'http://www.youtube.com/']; 
}); 

casper.eachThen(urls, function(response) { 
    console.log("Opening: "+response.data); 
    this.thenOpen(response.data, function(response) { 
     testvar = response.url; 
    }); 
}); 

casper.run(); 

我的理解是,這個應用程序應該打開yahoo.com其次youtube.com但是似乎在一步數組賦值之前不考慮所要採取的方式而且輸出將是「開放:http://google.com/」。

是誰在做這個知道任何限制或者這可能在casperJS的電流(測試)版中的錯誤。我正在使用最新的1.1.0-DEV

+0

你能嘗試包裝內則()語句的eachThen?我知道這看起來很愚蠢,但是每一個都異步運行這個函數,但是URL不會被這樣讀取。 – hexid

+0

如果你這樣做,它工作,但我很好奇,爲什麼我需要添加包裹在看到每個eachThen迭代本身是一個一步步整個事情。 – ByteFlinger

回答

0

爲了回答我自己的問題,將整個事情包裝在一個then()步驟中,完成工作,如註釋中的hexid所解釋的,然而它似乎將其作爲「獨立「是不可能的(無論是由於錯誤還是設計,目前我都不確定)。