比如像IM即时通讯开发,如果用别人的SDK,需要特别关注接口,回调函数和返回值
想请教下各位,UI层对这些接口,回调函数,以及返回值是如何利用的。
有实际的例子说明,如何利用的吗?
感谢各位。
根据客户端版本,对sdk的回调与返回做出应答式交互反馈给前段UI层。
直接有回调函数执行的
其实都是监听,比如Android来说,就是有一个UI线程,然后有其它后台线程,在早期Android版本中,是可以在UI线程中进行耗时操作(比如网络请求),
但后来的版本就不允许在UI线程中执行耗时操作了,因为耗时操作会导致UI线程卡住,一直等待网络的响应,最终导致无响应。
后面的解决办法就是,新开线程进行网络请求,然后完成请求后,通知UI线程更新UI。
回调函数的本质是异步地由被调用者主动调用调用者,实现通知一类的操作。
所谓同步就是,你调用一个函数/服务/接口,函数立刻返回数据。缺点是显而易见的,首先,调用者必须等待被调用者执行完了才能得到结果,继续往下执行,期间,程序不能做别的。(比如长时间计算)
或者,被调用者只能一次性返回所有的数据,而调用者为了得到不断产生的数据,就要主动调用被调用者很多次。(比如聊天和消息推送)
而异步调用,调用者将回调的函数(或者地址,对于web服务来说)告诉被调用者,这样被调用者可以在执行完成或者需要通知调用者的时候通过这个回调函数/地址调用它。因为是反过来,被调用者作为调用者主动调用,所以叫回调。
而调用者在传入回调函数后,不必等被调用者返回就可以执行下面的操作。
注意,回调函数和多线程没有必然的关系。
使用sdk前建议详细阅读文档, 然后建立测试demo, 通过后再运用到项目中, 回调机制很简单, 把自身的引用交给别人来调用自身的函数
那要看你做什么功能,给你看一段我的代码(ajax):
$.ajax({
type: "post",
url: templateRoot + "/ndgzbg/updateScjy.action?values="+values, // values是前台往后台传的值
async : false, //同步执行
dataType : "json",
success: function(data) { //回调函数
$.messager.alert('提示信息',data.message,'info');//弹出我从后台传来的值
window.location.href=templateRoot +"/jsp/business/zdbs/orgbasicinfo.jsp"//因为我这个是在详情页面的添加 所以又刷新了一下页面
}
});