从功能中获取价值

时间:2016-08-17 16:59:50

标签: javascript jquery variables scope

我学习JS几个月,我编写了简单的脚本。但现在我碰到了一个我无法在谷歌制定的问题。我有程序

var iWantValueFromAjax = "im empty";
$.ajax({
  type: "POST",
  dataType:'jsonp',
  url: "https://api.novaposhta.ua/v2.0/json/",
  data: {
    "modelName": "Address",
    "calledMethod": "getCities",
    "methodProperties":{}, 
    "apiKey": "6f94a6391cb5134ee68ddb7924de2a3d"},
    success: function(msg){
      iWantValueFromAjax = msg.data.map(function(e) {
        return (e.Description);
      });
    },
  }
);
console.log(iWantValueFromAjax);

我看到了什么值变量" iWantValueFromAjax"没有改变。我怀疑我不了解jquery的范围问题。可能我不理解整个想法范围,哈哈。

1 个答案:

答案 0 :(得分:0)

您需要了解异步请求的性质。

异步意味着:您正在启动一些操作(在一段时间后)将更改状态并调用回调函数。

但是:在启动异步操作后,正常的程序流程将继续。

这是什么意思?

  1. 代码console.log(iWantValueFromAjax)将在调用$ .ajax()之后立即执行。所以它肯定会在调用请求回调之前运行
  2. 每个依赖于异步调用结果的后续操作都必须在回调中执行或从该回调中调用(例如通过调用函数)。特别是你不能从异步回调中返回任何东西(技术上你可以,但返回值最终会结束"无处")