如何在Javascript中将我的函数设置为异步?

时间:2018-04-03 18:31:30

标签: javascript node.js asynchronous async-await

我试图了解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");

1 个答案:

答案 0 :(得分:0)

你不能写异步javascript。但是,javascript API提供了异步行为的内部函数(setTimeoutfetch),您可以使用它们。因此,您需要那些异步内部调用来实际编写异步代码。 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
     }
  })()
}