Javascript 如何在ajax调用后返回值?

Javascript 如何在ajax调用后返回值?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我想向其他函数返回一个ajax调用值。代码如下所示 剧本 var obj2 = ajax_call(); function ajax_call() { var obj3; $.post("action.php",{action: 'view_style_code_action',style_val: v},function(data,status){ obj3 = $.parseJSON(data); }); return(obj3)

我想向其他函数返回一个ajax调用值。代码如下所示

剧本

var obj2 = ajax_call();
    function ajax_call() {
    var obj3;   
    $.post("action.php",{action: 'view_style_code_action',style_val: v},function(data,status){
        obj3 = $.parseJSON(data);
    });
    return(obj3);
    }
    console.log(obj2+'test'); 

AJAX将在将来返回结果(这就是为什么它是异步的)。由于JavaScript在单个线程中运行,因此不能立即返回值

您需要理解jQuery,它已经支持了

稍微修改一下代码,以利用代码中承诺的力量

function ajax_call() {
  return $.post("action.php", {action: 'view_style_code_action',style_val: v})
}

ajax_call()
  .then(function(data) {
    // Do the parsing here
    var obj3 = $.parseJSON(data);

    // Do rest of your work here.
    ...
  });

由于承诺是异步的,所以无法从中获得返回。我如何在其他函数中重用obj3值。如果我愿意,我必须再次调用相同的ajax,对吗?如何避免重复使用同一个ajax调用?哦,不,更新您的编码模式以遵循异步方式,这将为您提供更好的解决方案explanation@Rijo:从
中传递
obj3
的值。然后
传递给其他函数,然后执行任何操作。
function ajax_call() {
  return $.post("action.php", {action: 'view_style_code_action',style_val: v})
}

ajax_call()
  .then(function(data) {
    // Do the parsing here
    var obj3 = $.parseJSON(data);

    // Do rest of your work here.
    ...
  });