promise - 如何在外部访问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 的值未定义。有人可以帮助获得适当的价值吗
解决方案
不要考虑在 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 语法来缓解嵌套,但它不会改变问题的性质。
推荐阅读
- random - 以分布式模式加载时相同HTTP请求的不同随机变量
- r - 您如何在 Shiny/Plotly App 上创建一个滑块,该滑块返回在 SliderInput 上选择的范围之间的任何内容?
- node.js - Promise 仅在第一个请求时解决
- javascript - 将元素平滑地移动到其新位置,而无需手动设置其位置
- angular - 如何在请求标头中存储令牌并在标头中使用该令牌进行另一个 API 调用?
- javascript - Javascript 数组显示两次
- excel - “操作搜索和合并”:VBA
- javascript - 在 React 中提交表单后重定向到 URL
- python - KNN查询数据维度必须匹配训练数据维度
- r - 变量名称作为 R 函数中的输入