javascript - Protractor 中的 promise 回调排序

标签 javascript promise protractor

在下面的代码中,为什么promiseresolved显示在promisebeingresolved之前?

    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() Promise 位于开头,browser.wait() 位于结尾。当记录 promise returned 时,队列中的任何 Promise 都不会被解析。

关于javascript - Protractor 中的 promise 回调排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28813517/

相关文章:

javascript - TypeScript 中的强类型 Immutable.js 记录

javascript - 非常小的 javascript 没有在 php 页面上运行

javascript - 断言失败,因为它不等待 promise 解决

javascript - RxJS:连接三个 promise ,区分结果

javascript - Chrome 停止 click() 的默认行为

javascript - 使用受控状态更新 react 形式

javascript - 从 selenium webdriver promise 获得最终输出的简洁方法

Angular CLI E2E 测试错误的 ChromeDriver

javascript - browser.sleep() 和 browser.wait() 方法有什么区别?

protractor - 如何将 baseUrl 从 protractor.conf 传递到我的测试中以在测试中对其进行断言?