javascript - 简化 Protractor 中的嵌套 promise

标签 javascript angularjs promise protractor nested

<分区>

我有一个尺寸和位置未知的 Canvas 。我想根据 Protractor 中 Canvas 的尺寸和位置模拟点击特定坐标。

以下工作,但相当乏味:

 var canvas = element(by.id("canvas")); 

 canvas.getCssValue("left").then(function (left) {

            canvas.getCssValue("top").then(function (top) {

                canvas.getCssValue("width").then(function(oldWidth) {

                        canvas.getCssValue("height").then(function (oldHeight) {

                        // some code that uses left, top, oldWidth and oldHeight together

                                })
                            })

                        })
                    }
                )
            })
        })

是否有更优雅的方式同时使用所有这些 promise ?我真的很想做如下事情:

var width = canvas.getCssValue("width");
var height = canvas.getCssValue("height");

var left = canvas.getCssValue("left");
var top = canvas.getCssValue("top");

//code that uses these variables. 

当然,如果违反 promise 的性质。感谢您的帮助。

最佳答案

function spreader(fn) {
    return function(arr) {
        return fn.apply(this, arr);
    }
}

var width = canvas.getCssValue("width");
var height = canvas.getCssValue("height");

var left = canvas.getCssValue("left");
var top = canvas.getCssValue("top");

protractor.promise.all(width, height, left, top)
    .then(spreader(function(width, height, left, top) {
    // Use width, height, left, top as values
}));

关于javascript - 简化 Protractor 中的嵌套 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28442313/

相关文章:

javascript - ng-if 和 grid-tile 的问题

javascript - 如何重新渲染快速路线上的页面并显示错误消息?

javascript - ng-class 和动画的竞争条件

javascript - 尝试从 JavaScript 客户端的 PHP 服务器捕获托管的 PayPalCheckoutSdk.Orders.OrdersCreateRequest 错误

javascript - 调用包含 Promise 的 Async 函数返回未定义

javascript - "value === false"更优雅的替代方案?

javascript - 使用 javascript 添加书签

angularjs - 如何在 Angular ui 网格中禁用编辑排序

javascript - 从 javascript 构建 AngularJS 的 ng-pattern

javascript - promise 的嵌套 while 循环