在 javascript 函数中使用 return 的问题

problem with using return in javascript function

我正在使用 Esri ArcMap API 我做了一个函数来查询层和 returns 结果, 我想让这个函数 return 成为在制作小部件时使用它的结果。

function queryLayer(filterType,value){

    var x 

    schoolLayer.definitionExpression = filterType+" = '" + value + "'";

    const queryParams = schoolLayer.createQuery();
    queryParams.where =  filterType +" = '" + value + "'";
    queryParams.outFields = [filterType]
    schoolLayer.queryFeatures(queryParams).then(function (results) {

        x = results.features
    });
   return x
}

这是一个承诺,承诺是异步的。

schoolLayer.queryFeatures(queryParams).then(function (results) {
    x = results.features
});

您可以 return 您的解析函数中的结果:

function queryLayer(filterType,value){
    schoolLayer.definitionExpression = filterType+" = '" + value + "'";
    const queryParams = schoolLayer.createQuery();
    queryParams.where =  filterType +" = '" + value + "'";
    queryParams.outFields = [filterType]
    schoolLayer.queryFeatures(queryParams).then(function (results) {
        return results.features;
    });
}

如果这不起作用,您可以 return 整个承诺:

function queryLayer(filterType,value){
    schoolLayer.definitionExpression = filterType+" = '" + value + "'";
    const queryParams = schoolLayer.createQuery();
    queryParams.where =  filterType +" = '" + value + "'";
    queryParams.outFields = [filterType]
    return schoolLayer.queryFeatures(queryParams);
}

并像这样使用它:

queryLayer(filterType,value).then(funtction(response){
    // do whatever you want to do with your Response ...
}