已淘汰“异步”的使用。在ajax / Jquery中进行同步调用的替代方法

时间:2018-08-16 18:35:42

标签: javascript jquery ajax

我想在发布请求后返回一些数据,并保存在局部变量中多次使用。我写了下面的代码,每次都会返回未定义的代码。

function getSomeList()
{
    var myVariable;
    $.post("/Home/getList", { 'input': inputData })
  .done(function (data) {
      //alert("Data Loaded: " + data); // I can see the data here.
      myVariable = data;
  });
  return myVariable;
}

如果调用此函数,则返回未定义。

  alert(getSomeList());

我还尝试了通过写async:false的旧方法,并且知道“ async”的使用已被贬值。

$.ajax({
    'async': false,
    'type': "POST",
    .
    .
    .
});

请让我知道是否还有其他解决方法。

1 个答案:

答案 0 :(得分:4)

使用异步处理范例中的回调。

function getSomeList(inputData) {
  return $.post("/Home/getList", { 'input': inputData });
}

getSomeList(missingVariable).then(function(data){
  alert(data);
});

如果稍后需要在应用程序中使用该值,则可以存储promise并在以后使用。

someSharedVariable = getSomeList(missingVariable);

... other lines of code ...

... future point in time ...
someSharedVariable.then(function(data){
  //use data in your secondary ajax call
});