var BrowserMutationObserver = window.MutationObserver || window.WebKitMutationObserver
if (BrowserMutationObserver) { //chrome18+, safari6+, firefox14+,ie11+,opera15
avalon.nextTick = function(callback) { //2-3ms
var input = DOC.createElement("input")
var observer = new BrowserMutationObserver(function(mutations) {
mutations.forEach(function() {
callback()
})
})
observer.observe(input, {
attributes: true
})
input.setAttribute("value", Math.random())
}
} else if (window.VBArray) {
//IE下这个通常只要1ms,而且没有副作用,不会发现请求,
//setImmediate如果只执行一次,与setTimeout一样要140ms上下
avalon.nextTick = function(callback) {
var node = DOC.createElement("script")
node.onreadystatechange = function() {
callback() //在interactive阶段就触发
node.onreadystatechange = null
root.removeChild(node)
node = null
}
root.appendChild(node)
}
} else {
avalon.nextTick = function(callback) {
setTimeout(callback, 0)
}
}