我如何从一个异步调用返回响应?
来源:互联网 发布:微传单软件 编辑:程序博客网 时间:2024/05/21 17:38
问题:
"A"在Ajax中代表异步,它意味着发送请求(或者接收响应)都不是在正常的执行流中。比如,$.ajax立刻返回并且下一个状态,return result;,是在你获取ajax中响应,把响应结果赋值给result之前执行(即先执行return result,后执行result=response)。
这里是一个分析,希望能够帮助你更加清楚同步和异步之间的不同。
同步
发挥想像,你给你的一个朋友打电话让他帮你干某件事情,尽管它会花费一点时间,你会电话等待并且凝视天空,直到你的朋友给你你需要的答案。
当你使用一个包含“正常的”的代码的函数调用时会有同样的事情发生:
function findItem() {
var item;
while(item_not_found) {
// search
}
return item;
}
var item = findItem();
// Do something with item
doSomethingElse();
尽管findItem可能花费很长的时间来执行,所有在findItem()之后的代码都必须等待直到这个函数返回结果。
异步:
继续想像。你因为一些原因又打电话骚扰他了,但是这次你告诉他你很忙并且他应该打你的手机。你挂掉电话,离开家并且做你之前计划好的事情。一旦你的朋友打电话给你,你立刻处理你朋友给你的信息。
当你使用Ajax请求是,同样的事情实际上也正在发生。
findItem(function(item) {
// Do something with item
});
doSomethingElse();
不是一样在等待响应,执行会立刻继续并且在Ajax调用之后的语句被执行。为了最终能够获取响应,你提供一个函数,一旦响应被接收,这个函数就会被立刻调用,所有在那个调用之后的代码都被在回调被调用之前执行。
解决办法:
"A"在Ajax中代表异步,它意味着发送请求(或者接收响应)都不是在正常的执行流中。比如,$.ajax立刻返回并且下一个状态,return result;,是在你获取ajax中响应,把响应结果赋值给result之前执行(即先执行return result,后执行result=response)。
这里是一个分析,希望能够帮助你更加清楚同步和异步之间的不同。
同步
发挥想像,你给你的一个朋友打电话让他帮你干某件事情,尽管它会花费一点时间,你会电话等待并且凝视天空,直到你的朋友给你你需要的答案。
当你使用一个包含“正常的”的代码的函数调用时会有同样的事情发生:
function findItem() {
var item;
while(item_not_found) {
// search
}
return item;
}
var item = findItem();
// Do something with item
doSomethingElse();
尽管findItem可能花费很长的时间来执行,所有在findItem()之后的代码都必须等待直到这个函数返回结果。
异步:
继续想像。你因为一些原因又打电话骚扰他了,但是这次你告诉他你很忙并且他应该打你的手机。你挂掉电话,离开家并且做你之前计划好的事情。一旦你的朋友打电话给你,你立刻处理你朋友给你的信息。
当你使用Ajax请求是,同样的事情实际上也正在发生。
findItem(function(item) {
// Do something with item
});
doSomethingElse();
不是一样在等待响应,执行会立刻继续并且在Ajax调用之后的语句被执行。为了最终能够获取响应,你提供一个函数,一旦响应被接收,这个函数就会被立刻调用,所有在那个调用之后的代码都被在回调被调用之前执行。
解决办法:
今天就翻译到这里,有时间继续:
https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call
https://stackoverflow.com/questions/562412/return-value-from-function-with-an-ajax-call
https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call
http://blog.slaks.NET/2015-01-04/async-method-patterns/
https://stackoverflow.com/questions/23667086/why-is-my-variable-unaltered-after-i-modify-it-inside-of-a-function-asynchron
http://fwhyy.com/2009/12/in-js-method-return-multiple-values-of-the-three-methods/
阅读全文
0 0
- 我如何从一个异步调用返回响应?
- 如何异步调用一个java方法,
- 异步调用同步返回
- [转]从其他 API 如何调用 lstrcpy 接收 LPSTR 返回
- 如何异步调用方法
- 20 如何从一个方法中返回多个值
- iOS如何从一个界面返回到指定界面?
- 如何使用指针从函数返回一个数组。
- ajax异步如何返回responseText
- 如何根据异步调用返回数据控制编辑删除等图标的显示
- 异步调用接口返回大量数据,如何处理才能使页面渲染时不卡?
- 如何从一个mxml 中调用另一个mxml?
- 如何从 appdelegate.mm helloworldlayer.mm 中调用一个方法
- Ajax异步调用返回码及意义
- 表单异步提交不返回响应数据总结
- python 中,如何在一个函数中调用另一个函数返回的多个值中的一个?
- [K/3Cloud] 如何从被调用的动态表单界面返回数据
- 多线程(异步委托)调用和控件响应问题
- Stack介绍以及设计一个有getMin 功能的栈
- CAS实现单点登录SSO执行原理探究(终于明白了)
- 栈,队列和双端队列的操作
- Spring Boot入门教程-FreeMarker模板
- Android Studio教程:启动时不自动打开项目
- 我如何从一个异步调用返回响应?
- Linux shell script 1 basic scripts
- Oracle之快速复制表-yellowcong
- 修改kafka_run_class.bat并增加JRE_HOME判断
- HTML5客户端数据存储Web Storage——localStorage与sessionStorage
- Hibernate与 MyBatis的比较
- MySQL性能利器:innotop工具
- replace与replaceAll的区别
- JS实现加密以及cookie保存(不经过后台,直接在页面操作)