当嵌套异步函数完成时执行某些操作
do something when nested async function is finished
function hello() {
var arr = [];
$.get(url, function (data) {
var items = $(data).find("item");
$(items).each(function (idx, item) {
arr.push(item);
});
});
return arr; //undefined because nested loops are not finished processing.
}
如何确保在返回之前填充arr
?
无法从异步调用中转义。您需要回调才能获得GET
调用的结果。
function asynCall() {
var response;
// Ajax call will update response here later.
return response;
}
var responseFromFun = asyncCall(); // This will be undefined or null.
这就是您的代码现在的工作方式。所以回应将永远是undefined
或null
.
要从 Ajax 调用获取响应,请在调用函数时向函数传递回调,而不是为其分配响应。
function asyncCall(callBack) {
var response;
$.get(...) {
response = someValueReturnedFromServer;
callBack(response);
}
// There wont be a return here
}
asyncCall(function(response){
// Do something with response now
});
这里的缺点是,如果您要arr
对象(在您的代码中)传递给其他函数,即使必须将其更改为使用回调!
相关文章:
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- Google 脚本:用于创建日历活动的脚本运行时不会出错,但不会执行任何操作
- 当通过AJAX调用时,控制器操作不会执行
- jQuery-将列表项的一个元素移动到同一项的另一个元素中+对我的列表中的每个项执行此操作
- 点击:更改位置后执行某些操作
- 无法执行文件.退出Acrobat PDF中的操作
- 从表单中获取用户输入执行计算(操作顺序)并输出回该表单
- 如何在ListView项模板中获取按钮来执行不同的操作
- 单击元素两次后执行操作
- ReactJS只有在操作完成后才能执行某些操作
- toogleClass函数来切换元素类并在事件期间执行某些操作
- jQuery/Javascript foreach If/Else |如果为空(不执行任何操作)Else(显示forea
- Var工作,但在使用数组执行相同操作时停止
- 如何在mvc3中执行操作而不更改当前页面
- jQuery:$.ajax() 重定向到其 URL 表单操作参数,而不是对表单操作执行 AJAX 请求
- 如何为多个操作执行简单的 jQuery
- Redux 转换到操作执行后
- 反流操作执行后触发通知/回调
- jquery如果按钮点击了执行其他操作执行其他操作
- 在操作执行之前禁用锚链接