Javascript 卡斯珀斯:我能';由于我的异步casperjs,我无法在函数中获取返回值
我是一个测试人员(不是一个好的开发人员…),我的casperJs有一个问题,我不能得到我的函数的返回,因为有一个casperJs代码是异步的。 我有这个功能:Javascript 卡斯珀斯:我能';由于我的异步casperjs,我无法在函数中获取返回值,javascript,function,asynchronous,return,casperjs,Javascript,Function,Asynchronous,Return,Casperjs,我是一个测试人员(不是一个好的开发人员…),我的casperJs有一个问题,我不能得到我的函数的返回,因为有一个casperJs代码是异步的。 我有这个功能: function QuicksearchPage() { this.QuicksearchGetValue = function () { var quicksearchInput="nothing"; casper.then(function() { quicksearchInput = t
function QuicksearchPage() {
this.QuicksearchGetValue = function () {
var quicksearchInput="nothing";
casper.then(function() {
quicksearchInput = this.fetchText(QuicksearchPage_searchInput);
this.echo('le contenu de la quicksearch est :'+quicksearchInput);
return quicksearchInput;
})
return quicksearchInput;
};
}
var QuicksearchPage = new QuicksearchPage();
quicksearchValue=QuicksearchPage.QuicksearchGetValue();
casper.then(function() {
this.echo('My result is :'+quicksearchValue);
})
我的结果是“无”,我想我不能得到我的casper处理的结果,因为这是异步的,我的返回是先播放的
因此,如果您有任何解决方案或建议,谢谢。
QuicksearchGetValue
需要在QuicksearchGetValue函数中返回一个承诺(调用.then()
的返回值),您可以启动.then()部分,就像您意识到的那样,该部分是异步的。这样就可以排队了,同时你的函数继续。它到达的下一条指令是返回。这就是在代码段底部附近分配给变量的内容。从.then()函数返回值并不会返回函数中的值。正如Bergi所说,您的函数可以返回一个承诺。如果它足够简单,您也可以从初始的.then()函数中触发您想要发生的事情。