Получение данных ответа из-за пределов обратного вызова esriRequest

#javascript #callback #dojo #deferred #esri

Вопрос:

Я пытаюсь получить данные из службы rest, используя «esri/запрос». Мой вопрос в том, как получить данные ответа из этого запроса и использовать их вне этого в другой функции. Но не понимаю, как это возможно в разделе ниже fromOutSide() без использования переменной window.

https://developers.arcgis.com/javascript/3/jsapi/esri.request-amd.html

Наконец-то нашел способ получать переменные извне .затем с помощью кода lang.hitch в приведенном ниже примере

 define([
    'dojo',
    'dojo/_base/declare',
    'jimu/BaseWidget',
    'dojo/_base/array',
    'dojo/_base/lang',
    'esri/request'
],
function(
    dojo,
    declare,
    BaseWidget,
    array,
    lang,
    esriRequest,
) {
    // Run

    this.getMapService;


    getMapService: function() {
        var requestHandle = esriRequest({
            url: "https://services.arcgisonline.com/arcgis/rest/services/World_Topo_Map/MapServer/0?f=pjson",
            content: {
                f: "json"
            },
            handleAs: "json",
            callbackParamName: "callback"
        });
        requestHandle.then(this.requestSucceeded, this.requestFailed);
        
    },

    requestSucceeded: function(response, io) {
        let responseVar = response;
        console.log(responseVar);
    },

    requestFailed: function(error, io) {
        console.log(error);

    },

    fromOutSide: function() {
        // ? ? ? ?
        console.log(myVar);

    }

});




Updated code: After lang.hitch I was able to use my variables inside .then 
=========================================================


define([
    'dojo/_base/lang',
    'esri/request'
  ],
  function (
    lang,
    esriRequest
  ) {
    return declare([BaseWidget], {
      
      getWindDirection: function () {
          this.requestHandleNode.innerHTML = "";
          
          requestArgs = {
          url: this.config.windDirRestUrl,
          content: {
            f: "json"
            },
          handleAs: "json",
          callbackParamName: "callback",
            };
          
          esriRequest(requestArgs).then(lang.hitch(this, function (response) {
                                            this.requestSucceeded(response);
                                        }),
                                        lang.hitch(this, function (error) {
                                            this.requestFailed(error);
                                        })
            );               
      },
      
      requestSucceeded: function (response, io){
          this.showWindDirection(response);

      },
        
      requestFailed: function (error){
          console.log(error);
          
      },
      
      showWindDirection: function (response){
          console.log(response)
            
      }
      
    });
  });
 

Комментарии:

1. Наконец-то нашел способ получать переменные извне .затем с помощью lang.hitch .then(lang.hitch(this, function (response) { this.requestSucceeded(response); }), lang.hitch(this, function (error) { this.requestFailed(error); }));