大家好!
今天我们要实作的静态函式有点像 Promise 的感觉。
我们进入今天的主题吧!
Felix.queue = function (fns, data) {
if (!Felix.isArrayLike(fns)) return;
var i = 0;
var next = function (data) {
var fn = fns[i++];
return fn === fns[fns.length - 1] ? fn(data) : fn(next, data);
};
next(data);
};
Felix.queue([
function (next) {
console.log(0);
setTimeout(next, 1000);
},
function (next) {
console.log(1);
window.addEventListener('click', function listener(e) {
e.currentTarget.removeEventListener(e.type, listener);
return next(e);
});
},
function (data) {
console.log(`You clicked the ${data.target.tagName}.`);
}
]);
// Log: 0
/* 一秒後 */
// Log: 1
/* 点击後 */
// Log: You clicked the BODY.
执行到第一个函式时,不管点击几次都不会触发事件,因为监听器要等到第二个函式执行时才会被建立。
差不多也到尾声了,接下来我们要介绍的是函式库的静态方法。
如果对文章有任何疑问,也欢迎在下方提问和建议!
我是 Felix,我们明天再见!
<<: [day23]Vue实作-交易建立页面-API串接问题处理
在撰写程序时我发现了一个以前没有遇到过的事情,我原先一直以为是因为环境导致的但是後来我发现跟环境没有...
有些人可能以为在完成开发後,把产品交付给用户,只要有持续的做迭代与优化,产品的使用用户就会越来越多,...
在介绍本篇我们先来复习一下先前在 pure function 那章提过的一些名词 Side Effe...
今天要来介绍 Discriminated Union、Type casting、Index prop...
结合前几天学到的东西,可以来制作地图障碍物并且在地图内奔跑! 地图障碍物 1.画一张纯障碍物的Til...