@cicada/render
Advanced tools
Comparing version 1.1.8-alpha17 to 1.1.8-alpha18
@@ -67,2 +67,3 @@ 'use strict'; | ||
}); | ||
var stateIdDepended = {}; | ||
var startFns = []; | ||
@@ -112,3 +113,4 @@ | ||
var cancelRegister = (0, _util.map)(jobsToStart, function (job, name) { | ||
// 标记依赖 | ||
stateIdDepended[stateId] = true; | ||
// TODO 这样还是有问题的。 | ||
@@ -120,3 +122,5 @@ // 本来设计启动函数是为了在数据稳定之后再执行依赖。这样可以避免前面的组件要去读后面组件的值读不到。 | ||
setTimeout(function () { | ||
return run(stateId, name); | ||
// 在快速触发的浏览器事件流里(如键盘输入)删除某个组件可能会在1ms内注销stateId的依赖, 所以这里要加一个锁 | ||
if (!stateIdDepended[stateId]) return; | ||
run(stateId, name); | ||
}, 1); | ||
@@ -134,2 +138,3 @@ } else { | ||
var cancelStateId = function cancelStateId() { | ||
delete stateIdDepended[stateId]; | ||
(0, _util.mapValues)(dependenciesByUtility, function (utilityDepMap) { | ||
@@ -136,0 +141,0 @@ delete utilityDepMap[stateId]; |
{ | ||
"name": "@cicada/render", | ||
"version": "1.1.8-alpha17", | ||
"version": "1.1.8-alpha18", | ||
"main": "./lib/index.js", | ||
@@ -5,0 +5,0 @@ "scripts": { |
381670
9311