OpenLayers 3/Javascript:为什么我的数组填满后会有一个"delay"?

OpenLayers 3/Javascript: Why is there a "delay" when my array is filled?

我是一个 javascript-noob,试图通过 geoserver 和 openlayers3 访问数据。这是我的代码:

function loadData(featureName)
{
var features = [];

var featureRequest = new ol.format.WFS().writeGetFeature({
    srsName: 'EPSG:4326',
    featurePrefix: 'progeo16',
    featureTypes: [featureName],
    outputFormat: 'application/json'
});

fetch('http://...:8080/geoserver/wfs', {
    method: 'POST',
    body: new XMLSerializer().serializeToString(featureRequest)
}).then(function(response) {
    return response.json();
}).then(function(json) {
    features = new ol.format.GeoJSON().readFeatures(json);
});

return features;
}

我现在的问题是,功能数组"fast" 填充得不够。如果我在 "return features;" 处设置断点(使用 firebug),数组将为空。如果我等待 2 秒并将鼠标悬停在变量 "features" 上,则数组将填充预期的元素。 所以我的问题是: 我认为这可能是由于异步请求导致的问题。 我怎样才能 return 以正确的方式填充数组?

提前致谢

异步中可能存在延迟call.One处理它的方法是仅在异步完成后调用下一个连续步骤call.I在您的代码中添加callback_function() .例如

function loadData(featureName,callback_function)
{
var features = [];

var featureRequest = new ol.format.WFS().writeGetFeature({
    srsName: 'EPSG:4326',
    featurePrefix: 'progeo16',
    featureTypes: [featureName],
    outputFormat: 'application/json'
});
fetch('http://...:8080/geoserver/wfs', {
    method: 'POST',
    body: new XMLSerializer().serializeToString(featureRequest)
}).then(function(response) {
    return response.json();
}).then(function(json) {
    features = new ol.format.GeoJSON().readFeatures(json);
    callback_function(features);
});
}

然后使您的函数 loadData() 变为 return 空。但是当您的异步调用获取数据时,它将执行 callback_function() 这是您逻辑的下一步。