如何在外部访问促销变量值

时间:2019-12-11 03:22:30

标签: promise scope protractor

async selectAvailableRoute(routeCount: number) : Promise<any>{
var newRouteNum='';
for (let i = 1; i <= routeCount; i++) {

  this.availableRoute(i).click();
  this.availableRoute(i).getText().then(function (createdRouteNum) {
    Utils.logger('number'+ createdRouteNum);
    newRouteNum= createdRouteNum;

   });
return newRouteNum;

}

}

newRouteNum的

值未定义。有人可以帮助您获得适当的价值

1 个答案:

答案 0 :(得分:1)

不要考虑在Promise之外获取值,因为您可以在Promise解决之前执行该外部代码:请参阅以下SO answer,但总而言之,请习惯Java的异步性质。相反,只需绕过Promise本身,然后继续使用已解决的值。

async selectAvailableRoute(routeCount: number) : Promise<any>{
  // do whatever
  return this.availableRoute(i).getText().then(function (createdRouteNum) {
    // do whatever
    return createdRouteNum;
  });
}

// Just keep reusing the Promise as follows
var promise = selectAvailableRoute(...)
promise.then(function(createdRouteNum) {
   // do whatever
});

您可以使用async / await语法减轻嵌套的影响,但不会改变问题的性质。