只有在 3 秒内未执行代码时才执行块
Execute a block only when a code has not been executed in 3 seconds
如果 3 seconds
已通过并且 angular.bootstrap()
在 block 1
尚未完成,但前提是。
我有两段代码:
// block 1:
Office.initialize = function (reason) {
$(document).ready(function () {
angular.bootstrap(document, ['myApp'])
})
}
// block 2:
$(document).ready(function () {
angular.bootstrap(document, ['myApp'])
})
有人知道怎么做吗?
编辑 1: 只是为了澄清 Office.initialize
可能永远不会执行(即,当应用程序作为加载项加载到 Office 中时) .在这种情况下,我还是想在3秒内执行完block 2
的angular.bootstrap
您可以在 JavaScript 中使用 setTimeout()
和 clearTimeout()
函数。
函数用法:
设置超时:
setTimeout(function, time);`
//function is the function to execute
//time is the duration to wait (in milisecods) before executing the function
清除超时:
clearTimeout(id);`
//id is the id of the setTimeout block to stop from executing
这是将函数实现到代码中的方式:
// block 1:
var wait = setTimeout(myFunction, 3000);
Office.initialize = function (reason) {
$(document).ready(function () {
angular.element(document).ready(function () {
angular.bootstrap(document, ['myApp'])
clearTimeout(wait);
})
})
}
// block 2:
function myFunction() {
angular.element(document).ready(function () {
angular.bootstrap(document, ['myApp'])
}
此解决方案使用 underscorejs once 函数。写一个函数,比如,
var bootstrapInit = _.once(function(){
angular.bootstrap(document, ['myApp']);
});
现在,您可以在块 1、块 2 和 setTimeout 中调用此函数,时间为 3 秒。无论哪个先调用它都将执行该函数,其余调用将是虚拟调用。
如果 3 seconds
已通过并且 angular.bootstrap()
在 block 1
尚未完成,但前提是。
我有两段代码:
// block 1:
Office.initialize = function (reason) {
$(document).ready(function () {
angular.bootstrap(document, ['myApp'])
})
}
// block 2:
$(document).ready(function () {
angular.bootstrap(document, ['myApp'])
})
有人知道怎么做吗?
编辑 1: 只是为了澄清 Office.initialize
可能永远不会执行(即,当应用程序作为加载项加载到 Office 中时) .在这种情况下,我还是想在3秒内执行完block 2
的angular.bootstrap
您可以在 JavaScript 中使用 setTimeout()
和 clearTimeout()
函数。
函数用法:
设置超时:
setTimeout(function, time);`
//function is the function to execute
//time is the duration to wait (in milisecods) before executing the function
清除超时:
clearTimeout(id);`
//id is the id of the setTimeout block to stop from executing
这是将函数实现到代码中的方式:
// block 1:
var wait = setTimeout(myFunction, 3000);
Office.initialize = function (reason) {
$(document).ready(function () {
angular.element(document).ready(function () {
angular.bootstrap(document, ['myApp'])
clearTimeout(wait);
})
})
}
// block 2:
function myFunction() {
angular.element(document).ready(function () {
angular.bootstrap(document, ['myApp'])
}
此解决方案使用 underscorejs once 函数。写一个函数,比如,
var bootstrapInit = _.once(function(){
angular.bootstrap(document, ['myApp']);
});
现在,您可以在块 1、块 2 和 setTimeout 中调用此函数,时间为 3 秒。无论哪个先调用它都将执行该函数,其余调用将是虚拟调用。