0

最近xmlHTTPRequest、Web サービスの呼び出しを JSONP リクエストに置き換えましたが、それが原因でエラーが発生することがわかりました。JSONP が少し遅いことがわかりました。

initialize:function(){
  this.callParent();
  var jsonObject = Ext.create('MyProj.library.webservice').makeJSONPRequest('top_categories_json');
  Ext.getCmp('categoryList').setData(jsonObject.info);
  console.log(jsonObject.info);
}
makeJSONPRequest: function(urlx, postparams) {
  Ext.data.JsonP.request({
    params:{
      params:  Ext.JSON.encode(postparams)
    },
    success: function(result) {
      console.log('JSON RES');
      console.log(result.info);
      if (result) {
        //return JSON.parse(result);
        return result;
      } else {
        Ext.Msg.alert('Error', 'There was an error retrieving the weather.');
      }
    }
  });
}

呼び出しを実行した後makeJSONPRequest、JSONP リクエストが終了するのを待たずに次のステートメントが実行されるため、jsonObject未定義になることがわかりました。そのエラーの後、JSONP リクエストは終了し、値を出力します。とにかく、JSONP リクエストが完了するまでメインスレッドを中断します。

4

1 に答える 1

1

いいえ。サービスへの呼び出しは非同期です。すべてのロジックをコールバック ハンドラに配置する必要があります。または、応答を受信した後にイベントを生成し、そのイベントを処理します。

于 2013-05-01T04:38:40.983 に答える