0

我正在编写一些测试,casperjs但遇到了一些对我来说非常奇怪的事情:

这是代码:

casper.test.begin('Test', nbTests, function(test) {
    console.log(A_SERVER + A_IMPORT + A_IMPORT_TAB1);
    casper.start(A_SERVER + A_IMPORT + A_IMPORT_TAB1);    
    casper.waitForUrl(A_SERVER + A_IMPORT + A_IMPORT_TAB1, function (){
        console.log("ok");
    }, function(){
        console.log("nok");
    });
    console.log(casper.getCurrentUrl());
    casper.run(function(){
        test.done();
        this.exit();
    });
});

测试运行良好,但日志以这种方式显示:

http://127.0.0.1:8000/import/upload/
http://127.0.0.1:8000/import/upload/
ok

你能告诉我为什么最后两个日志是倒置的吗?我想这与如何处理函数有关javascript,但我想要一个更明确的解释。

4

1 回答 1

2

.waitForUrl()创建后台作业并返回。当远程服务器的响应到达时,它会调用回调函数。这就是为什么你看到同步

console.log(casper.getCurrentUrl());

第一的。

javascript中的所有匿名函数都是异步的吗?

不可以。阅读您使用的框架的文档以了解何时调用哪些回调。

通常,许多匿名函数是异步的,因为它们被用作事件处理程序(仅在事件发生时被调用)或处理 AJAX 响应(本质上是异步的)。

于 2013-09-24T14:50:05.807 回答