异步记忆-理解源代码
async memoized - understanding source code
从async.memoize()
,这个函数中注释后的最后一个else块做什么?
https://github.com/caolan/async/blob/master/lib/async.js#L671
async.memoize = function (fn, hasher) {
var memo = {};
var queues = {};
hasher = hasher || function (x) {
return x;
};
var memoized = function () {
var args = Array.prototype.slice.call(arguments);
var callback = args.pop();
var key = hasher.apply(null, args);
if (key in memo) {
callback.apply(null, memo[key]);
}
else if (key in queues) {
queues[key].push(callback);
}
else {
// what does this else block do?
queues[key] = [callback];
fn.apply(null, args.concat([function () {
memo[key] = arguments;
var q = queues[key];
delete queues[key];
for (var i = 0, l = q.length; i < l; i++) {
q[i].apply(null, arguments);
}
}]));
}
};
memoized.unmemoized = fn;
return memoized;
};
如果在memo
或queues
对象(if
语句的前两部分)中都找不到key
,则它会调用回调,并将回调的返回值作为一个单元素数组分配给queues[key]
。
然后,它调用queue[key]
数组中的任何函数。
相关文章:
- 活动选项卡's源代码-获取变量s值
- 无法更改源代码的网站的自动填充功能
- 如何使用javascript编辑页面源代码
- 在不更改HTML源代码的情况下,在管理员TinyMCE编辑器中突出显示文本
- 在Node.js中,我在哪里可以看到JavaScript方法的源代码,例如hasOwnProperty
- 有没有任何方法可以将javascript对象从源代码传递到系统/浏览器剪贴板
- 当源代码可用时,如何正确保护密码
- 用PHP读取另一个网站的源代码,并将其作为字符串提供给JavaScript
- 如何在HTML源代码中提取javascript变量
- 可以't识别验证消息的源代码
- Ember.js+传单+rails(使用Javascript MVC创建rails应用程序并打开源代码映射)
- 如何在internjs中打印createpage中的HTML源代码
- Node.js和Mongodb安全+源代码加密选项
- CKeditor不会在源代码模式下更新文本区域
- 源代码未完全执行.(JS)
- Fido U2F客户端javascript源代码
- 将web浏览器客户端输入传递给服务器Java源代码
- 在JS或jQuery或任何客户端脚本的帮助下,通过查看源代码读取源代码
- 我可以使用RubyonRails抓取URL的源代码吗?还是应该使用PHP
- 异步记忆-理解源代码