问题:a函数内部发起的ajax请求会得到一个code,那么作为b函数如何取到a函数的返回值(code)呢?b函数事由其他事件触发的。
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 就为请求返回的数据
})
}
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
2 回答4.2k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
3 回答2.7k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
4 回答2.5k 阅读✓ 已解决
这个问题早该结题了。实现方式常见无非就3种:
其他人提到的RxJs我不熟悉,粗看一下,类Promise,能很好实现异步编程同步化。