Javascript异步数据的同步处理方法
数据处理方法封装
var DataWatch=(function(){
            var gWatch={},cursor= 0,callback_key = 'callback',gMap={};
            var check=function(cursor,name){
                var _watcher=gWatch[cursor],itemCount = 0,resArr=[],flag=false;
                if(!!map){
                    return;
                }
                if(name && typeof (_watcher[name]) === undefined){
                    return;
                }
                for(var key in _watcher){
                    if(key === callback_key){
                        continue;
                    }
                    if(gMap[key]){
                        _watcher[key]=true;
                        resArr.push(map[key]);
                    }
                    itemCount++;
                }
                if(resArr.length === itemCount){
                    _watcher[callback_key] && _watcher[callback_key].apply(this,resArr);
                }
                resArr=null;
            };
            return {
                watch:function(name,callback){
                    //兼容watch单个内容
                    if(typeof(name) === 'string' ){
                        name=[name];
                    }
                    var _watcher={};
                    name.forEach(function(item){
                        _watcher[item]=false;
                    })
                    _watcher[callback_key]=callback;
                    cursor++;
                    gWatch[cursor]=_watcher;
                    check(cursor);
                },
                put:function(key,value){
                    gMap[key]=value;
                    for(var cursor in gWatch){
                        check(cursor,key);
                    }
                }
            }
        })()
使用方法可以下面这样
func1.ajaxSucc:DataWatch.put(key1,value1)
func2.ajaxSucc:DataWatch.put(key2,value2)
func3.ajaxSucc:DataWatch.put(key3,value3) DataWatch.watch([key1,key2],function(value1,value2){
}) DataWatch.watch([key1,key3],function(value1,value3){
})
Javascript异步数据的同步处理方法的更多相关文章
- Vue.js的列表数据的同步更新方法
		
这次给大家带来Vue.js的列表数据的同步更新方法,Vue.js列表数据同步更新方法的注意事项有哪些,下面就是实战案例,一起来看一下. 数组的 push(),pop(),shift(),unshift ...
 - [转载]Javascript异步编程的4种方法
		
NodeJs的最大特性就是"异步" 目前在NodeJs里实现异步的方法中,使用“回调”是最常见的. 其实还有其他4种实现异步的方法: 在此以做记录 --- http://www.r ...
 - (转)javascript异步编程的四种方法
		
本文转自:http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html 作者:阮一峰 本文仅仅作为个人mark ...
 - Javascript异步编程的4种方法
		
你可能知道,Javascript语言的执行环境是"单线程"(single thread). 所谓"单线程",就是指一次只能完成一件任务.如果有多个任务,就必 ...
 - Javascript 异步编程的4种方法
		
你可能知道,Javascript语言的执行环境是"单线程"(single thread). 所谓"单线程",就是指一次只能完成一件任务.如果有多个任务,就必须排 ...
 - Javascript 异步编程的4种方法详解
		
你可能知道,Javascript语言的执行环境是"单线程"(single thread). 所谓"单线程",就是指一次只能完成一件任务.如果有多个任务,就必须排 ...
 - 转:Javascript异步编程的4种方法
		
你可能知道,Javascript语言的执行环境是"单线程"(single thread). 所谓"单线程",就是指一次只能完成一件任务.如果有多个任务,就必须排 ...
 - Javascript异步编程的4种方法(阮一峰)
		
转载: http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html 你可能知道,Javascript语言的执 ...
 - (转载)Javascript异步编程的4种方法
		
你可能知道,Javascript语言的执行环境是"单线程"(single thread). 所谓"单线程",就是指一次只能完成一件任务.如果有多个任务,就必须排 ...
 
随机推荐
- 使用高德地图API
			
http://lbs.amap.com/smart/map/developer/mode/ 简单的附上一张图,其实能做得比这个更强大.
 - 14.6.7?Limits on InnoDB Tables   InnoDB 表的限制
			
14.6.7?Limits on InnoDB Tables InnoDB 表的限制 警告: 不要把MySQL system tables 从MyISAM 到InnoDB 表. 这是不支持的操作,如果 ...
 - android在其他线程中访问UI线程的方法
			
1.Activity.runOnUiThread( Runnable ) 2.View.post( Runnable ) 3.View.postDelayed( Runnable, long ) 4. ...
 - PLSQL数据导入
			
导入数据 (1) 首先以管理员身份登录plsql; (2) 新建命令窗口 (3) 创建用户,设置帐号,密码 创建语句:create user usernameidenti ...
 - lua 函数回调技巧
			
技巧1: local a = {}; function b() print("Hello World") end a["sell"] = {callFunc = ...
 - Php 解析XML文件
			
Php 解析XML文件 Php 解析XML文件,仅供学习參考!演示样例代码例如以下: <?php header("Content-type: text/html; charset=ut ...
 - WinDbg分析DMP文件方法完全攻略
			
前言:在C++实际开发过程中,开发出来的程序,一般情况下由开发人员进行单元测试,然后移交给测试人员进行测试.在开发人员测试出现的bug,我们可以直接在本地进行调试.如果测试人员测试出崩溃级别的bug, ...
 - 公司内网Debian Server上的openvpnserver搭建并通过SSH隧道转发到广域网
			
因为戴维营公司在长沙的学员,研发人员和北京的研发人员须要协同研发,故须要让北京的兄弟们增加到长沙办公室的内网,訪问版本号 管理server,于是採用在内网server上搭建一个OpenVPN服务,并把 ...
 - C#验证字符串是否是数字,是否包括中文,是否是邮箱格式,是否是电话格式
			
using System; using System.Web; using System.Text; using System.Web.UI.WebControls; ...
 - ThinkPHP中实例化对象M()和D()的区别,select和find的区别
			
原文:ThinkPHP中实例化对象M()和D()的区别,select和find的区别 1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在 ...