javascript 函数间传值问题?

问题:a函数内部发起的ajax请求会得到一个code,那么作为b函数如何取到a函数的返回值(code)呢?b函数事由其他事件触发的。

阅读 3.5k
7 个回答

这个问题早该结题了。实现方式常见无非就3种:

  1. 使用传统的回调函数callback方式
  2. 使用Promise
  3. 使用事件机制 trigger on

其他人提到的RxJs我不熟悉,粗看一下,类Promise,能很好实现异步编程同步化。

var ajaxCode;
function a() {
    ajax({
        success: function(data){
            ajaxCode = data.code;
        }
    })
}

function b(){
    console.log(ajaxCode);
}

$('button').trigger('EventName',b);
function a( callBack ){
    $.ajax({ 
        url: "xxxxxxx",  
        success: function(data){
           if(data){
               return callBack&& callBack(data)
           }
        }
    })
}

function b(){
    a(function(data){
        //b想处理的事
    })
}

这么做可以保证b事件触发时候,得到的a的值是同步的。不会出现a的值还没得到,就要执行b想要做的事。

用 promise 吧

function a(){
  return ajax({...})
}

function b(){
  a().then(res=>{
    // res 就为请求返回的数据
  })
}

二楼写没问题,一楼的只能用于同步,否则要出问题的

rxjs很适合这样的场景,了解一下

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题