javascript - 打字稿数组变量不可访问
问题描述
我需要一些帮助才能从函数调用 seachResults2 返回 myArray。当我执行控制台日志时,编译器告诉我它找不到 myArray。我希望能够将 myArray 返回给调用者。
const searchResults2 = (query: string) => {
const subscriptionKeyCredential = new atlasService.SubscriptionKeyCredential(
"SUBSCRIPTION"
);
const pipeline = atlasService.MapsURL.newPipeline(subscriptionKeyCredential);
const searchURL = new atlasService.SearchURL(pipeline);
searchURL
.searchAddress(atlasService.Aborter.timeout(10000), query)
.then((response) => {
const data2 = response.geojson.getFeatures();
const myArray = new Array(data2.features.length)
.fill(0)
.map((item, idx) => {
const category: string = data2.features[idx].id as string;
return {
value: category,
label: labelElement(query, category),
};
});
});
console.log(myArray); // Cannot find name 'myArray'
//return myArray cant do since its not accessable.
};
const labelElement = (query: string, category: string) => {
return (
<div
style={{
display: "flex",
justifyContent: "space-between",
}}
>
<span>
Found {query} on <a>{category}</a>
</span>
<span>{getRandomInt(200, 100)} results</span>
</div>
);
}
它被称为这样。
const [options, setOptions] = useState<SelectProps<unknown>["options"]>([]);
const handleSearch = (value: string) => {
setOptions(value ? searchResults2(value) : []);
};
这是关于变量范围的问题。
解决方案
在这种情况下,您可以尝试使用 async/away 并myArray
从 Promise 之一返回,它将自动包装在 Promise 中
const searchResults2 = async (query: string) => {
const subscriptionKeyCredential = new atlasService.SubscriptionKeyCredential(
"SUBSCRIPTION"
);
const pipeline = atlasService.MapsURL.newPipeline(subscriptionKeyCredential);
const searchURL = new atlasService.SearchURL(pipeline);
let myArray = await searchURL
.searchAddress(atlasService.Aborter.timeout(10000), query)
.then((response) => {
const data2 = response.geojson.getFeatures();
return new Array(data2.features.length)
.fill(0)
.map((item, idx) => {
const category: string = data2.features[idx].id as string;
return {
value: category,
label: labelElement(query, category),
};
}); // you can keep it as const but log it in this level
});
console.log(myArray);
};
推荐阅读
- python - 关于 Python 中的随机性
- cassandra - 为什么唯一约束会删除与 cassandra 一起使用的 Janusgraph 中的现有数据?
- python - 将 3 个表的结果尝试到单个数据框
- gitlab - Gitlab - 列出“我的”打开子模块合并请求?
- javascript - 使用 Fetch/Axios 将图像作为 FormData 发布在 Android 上会中断
- amazon-web-services - AWS Amplify 无法与 Elastic BeansTalk 连接
- ios - 不滚动表格的 UITableView 的动画位置
- dask - Qi:如何设置与 SLURM 20.02.3 兼容的 dask 和 dask_ml 配置
- python - 如何使 python 数据透视表(边距 = True)返回行/列的总和,而不是平均值?
- tensorflow - TF2.0保存或冻结图或onnx模型中将双线性调整大小更改为最近邻(NN)的方法