Protractor 中的承诺回调排序

Promises callbacks ordering in Protractor

在下面的代码中为什么promise resolved显示在promise being resolved之前?

    var p = protractor.promise.defer();

    element(by.css("input.m-call-to-action")).click().then(function() {
        console.log('promise being resolved');
        p.fulfill(true);
    });

    browser.wait(function() {
        console.log('p', p);
        return p;
    }, 5000);

    console.log('promise resolved', p);

这基本上就是 Control Flow 文档页面描述的内容:

WebDriverJS (and thus, Protractor) APIs are entirely asynchronous. All functions return promises.

Protractor 维护一个控制流队列,您的 click() 承诺在开头,browser.wait() 在结尾。当记录 promise resolved 时,none 队列中的承诺得到解决。