[英]array.push(item) in function
I want to push all volume to arrayVolume but can't.我想将所有卷推送到 arrayVolume 但不能。 In my opinion the problem is asynchronous.在我看来,问题是异步的。 But I search, read document but can't do it run correct.但是我搜索,阅读文档但无法正确运行。 Please help me solve the code if you can.如果可以的话,请帮我解决代码。 That is my gratitude to you.那是我对你的感谢。 Many thanks!非常感谢!
function kl(data){
var arrayVolume = [];
for(var key in data){
var dbId = data[key];
viewer.getProperties(dbId, function(e){
var propertiesObj = e.properties;
propertiesObj.forEach(myF);
function myF(obj){
if(obj.displayName === "Volume"){
var volume = obj.displayValue;
arrayVolume.push(volume);
}
}
});
}
alert(arrayVolume);
}
If that viewer.getProperties
is an async operation, like an http call, you should use promises.如果该viewer.getProperties
是异步操作,例如 http 调用,则应使用 Promise。
For example:例如:
async function kl(data) {
var arrayVolume = [];
for (var key in data) {
var dbId = data[key];
await new Promise((resolve, reject) => {
viewer.getProperties(dbId, (e) => {
var propertiesObj = e.properties;
propertiesObj.forEach(myF);
function myF(obj) {
if (obj.displayName === "Volume") {
var volume = obj.displayValue;
arrayVolume.push(volume);
}
}
return resolve();
});
});
}
alert(arrayVolume);
}
I have the same problem again here.我在这里又遇到了同样的问题。 How can I deal with it.我该如何处理。 Actually I still can't understand async await promises.实际上我仍然无法理解异步等待承诺。 klht return no object. klht 没有返回 object。 @Ali Demirci @阿里德米尔西
var klht = [];
dataViewerFirst.forEach(obj => {
var externalId = obj.externalId;
var _projectName = obj.projectName;
var status = obj.status;
if(externalId !== null && externalId !== undefined && _projectName === projectName && status === 1){
viewer.model.getExternalIdMapping(data => first(data));
async function first(data){
dbId = data[externalId];
await new Promise((resolve, reject) => {
viewer.getProperties(dbId, function(e){
var propertiesObj = e.properties;
propertiesObj.forEach(myF);
function myF(obj){
if(obj.displayName === "Volume"){
var volume = obj.displayValue;
klht.push(volume);
console.log('vol '+volume);
}
}
return resolve();
});
})
//return resolve();
}
}
})
console.log('v '+klht);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.