将不同的回调函数传给某一函数,该函数将相应实现不同的功能,这样该函数自身保持不变,可
提高复用,同时可以完成多种任务,达到定义与实现的解耦。
状态模式与回调函数的结合使用,可以使逻辑分支简单清晰,功能多样。详见李先静的书
《程序员成长计划》第十章。
回调函数实际就是一个指向函数的指针,作为函数的参数,当需要时,写出来(也就是调用)就可实现
相应作用,其中回调函数带有上下文参数,用于存储、或其他作用(如扩展)。
用户界面与实现函数(内部实现)通过回调函数(或接口)使内部实现反向调用用户界面,
见李先静老师的书第11章。
JS中回调函数的使用:
AjaxInAction中第10章“输入前提示”中
var loader1 = new net.ContentLoader
(theTextBox.obj.erverLoader,BuildChoices,null,"Post",strParams);
其中BuildChoices就是回调函数,当创建net.Contentloader时,BuildChoices就被调用。
现在看的书(ebook)
android.开发书籍.Pro.Android.Web.Apps.Develop.for.Android.using.HTML5,.CSS3.&.JavaScript
中第4章todolist.js有callback的调用,当时的感觉是,该函数与本地数据库操作有关,是builtin的
吗?答案:错!
getMostImportantTask: function(callback){
中的callback是形参,实际参数是调用getMostImportantTask时传递过来的起处理作用的函数。
todolist.js中后半段:
activeMain : function(){
ToDoList.Storage.getMostImportantTask(function(task)){
if(task){
其中传给getMostImportantTask的匿名函数就是前面形参callback所对应的实参。
在activateMain中给出了在getMostImportantTask使用的callback的实现,即
function(task){
if(task){
jQuery("#main .notasks").remove();
在卢春城的Lesktop中大量使用的callback应该也是这样的作用。待总结。
见李先静老师的书第11章。
JS中回调函数的使用:
AjaxInAction中第10章“输入前提示”中
var loader1 = new net.ContentLoader
(theTextBox.obj.erverLoader,BuildChoices,null,"Post",strParams);
其中BuildChoices就是回调函数,当创建net.Contentloader时,BuildChoices就被调用。
现在看的书(ebook)
android.开发书籍.Pro.Android.Web.Apps.Develop.for.Android.using.HTML5,.CSS3.&.JavaScript
中第4章todolist.js有callback的调用,当时的感觉是,该函数与本地数据库操作有关,是builtin的
吗?答案:错!
getMostImportantTask: function(callback){
中的callback是形参,实际参数是调用getMostImportantTask时传递过来的起处理作用的函数。
todolist.js中后半段:
activeMain : function(){
ToDoList.Storage.getMostImportantTask(function(task)){
if(task){
其中传给getMostImportantTask的匿名函数就是前面形参callback所对应的实参。
在activateMain中给出了在getMostImportantTask使用的callback的实现,即
function(task){
if(task){
jQuery("#main .notasks").remove();
在卢春城的Lesktop中大量使用的callback应该也是这样的作用。待总结。