For loop 为什么调用的语句会自动从for循环中排除

For loop 为什么调用的语句会自动从for循环中排除,for-loop,protractor,For Loop,Protractor,我尝试使用for循环循环数组中的元素,然后将符合条件的元素筛选为两个。然后在循环体中调用的语句(参见下面的代码),当我运行代码时,我注意到这两个。然后循环体中的语句直到for循环结束时才被调用,即使我在循环体中定义了它们,这意味着只有最后一个元素被传递到.then语句中,而不是按预期筛选每个元素。 请告知如何在每个循环中执行后续的.then语句。谢谢 //get all of opportunity list commonFunction.getAllTextByXpath(dealWorksp

我尝试使用for循环循环数组中的元素,然后将符合条件的元素筛选为两个。然后在循环体中调用的语句(参见下面的代码),当我运行代码时,我注意到这两个。然后循环体中的语句直到for循环结束时才被调用,即使我在循环体中定义了它们,这意味着只有最后一个元素被传递到.then语句中,而不是按预期筛选每个元素。 请告知如何在每个循环中执行后续的.then语句。谢谢

//get all of opportunity list
commonFunction.getAllTextByXpath(dealWorkspace.opportunityNameXPath).then(function (inactiveOpptyList) {
    //to identify the oppty with permission 'Admin' and status 'On Hold' 
    for (var j = 0; j < inactiveOpptyList.length; j++) {
         var inactiveOpptyName = inactiveOpptyList[j];

         //get permission of the opportunity
         dealWorkspace.getPermissionOppty(inactiveOpptyName).then(function (permission)     {
             if (permission === 'Admin') {
                //get status of the opportunity
                dealWorkspace.getStatusByOppty(inactiveOpptyName).then(function (status) {

                    //take action of Delete opportunity with cancel option
                    if (status === 'On Hold') {
                       inactiveOppty.deleteOppty(inactiveOpptyName, 'Cancel');
                    }
                });
             }
         });
    }
});

尝试将
var j=0
更改为
let j=0
let
可以声明代码块范围变量,如
for
代码块
var
只能声明函数和全局范围变量。for的
主体包含执行异步的承诺。当承诺执行时,
j
等于
inactiveOpptyList.length-1
,for循环将只执行一个周期。我将var j=0更改为让j=0。它成功了!!感谢您有效的解决方案和对原因的解释。谢谢,非常感谢!
//get the permission with oppName
dealWorkspace.prototype.getPermissionOppty = function(oppyName) {

return element(by.xpath("//span[contains(text(),'"+oppyName+"')]/parent::*/parent::*/following-sibling::td[@class='permission-td capitalize ng-binding']")).getText();
};

//get the status with oppName
dealWorkspace.prototype.getStatusByOppty = function(oppyName) {

return element(by.xpath("//span[contains(text(),'"+oppyName+"')]/parent::*/parent::*/following-sibling::td[@class='status-td capitalize ng-binding']")).getText();
};