我试图了解Javascript的异步行为,我们如何在正常的函数中实现。例如下面的代码我试图实现一个异步工作的自定义SetTimeout函数。它应调用函数muCsutSetInterval
并转到console.log("after");
。
请建议正确的方法。感谢你的帮助..
var myCustSetInterval = function (time, callback){
let initial = new Date();
let current;
while(true){
current = new Date();
if(current.getTime()-initial.getTime()===time){
break;
}
}
callback();
}
console.log("before");
myCustSetInterval(5000,()=>{
console.log("Callback");
});
console.log("after");
答案 0 :(得分:0)
你不能写异步javascript。但是,javascript API提供了异步行为的内部函数(setTimeout
,fetch
),您可以使用它们。因此,您需要那些异步内部调用来实际编写异步代码。 E.g:
function customSetTimeout(callback, ms, ...args) {
const ends = Date.now() + ms;
(function check() {
if(new Date >= ends) {
callback(...args);
} else {
setTimeout(check, 0); // <- the internal call
}
})()
}