首页 > 解决方案 > 如何在外部访问promoise变量值

问题描述

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 的值未定义。有人可以帮助获得适当的价值吗

标签: promisescopeprotractor

解决方案


不要考虑在 Promise 之外获取值,因为您可能会在 Promise 得到解决之前执行该外部代码:请参阅以下SO 答案,但简而言之,请习惯 Javascript 的异步特性。相反,只需传递 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 语法来缓解嵌套,但它不会改变问题的性质。


推荐阅读