Javascript 卡斯珀斯:我能';由于我的异步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

我是一个测试人员(不是一个好的开发人员…),我的casperJs有一个问题,我不能得到我的函数的返回,因为有一个casperJs代码是异步的。 我有这个功能:

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()函数中触发您想要发生的事情。