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的值未定义。有人可以帮助您获得适当的价值
答案 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语法减轻嵌套的影响,但不会改变问题的性质。