
您可以在 github 仓库中找到这篇文章中的所有代码。
/**
 * @param {function} callbackfn
 * @param {delay} number
 * @return {object}
 */
function invokelater(callbackfn, delay) {
  const timerid = settimeout(() => {
    callbackfn(null, 'run');
  }, delay);
  return {
    clear: () => cleartimeout(timerid),
  }
}
// usage example
const cancel = invokelater((err, data) => {
  console.log(data);
  cancel.clear();
}, 2000);
/**
 * @param {function} fn
 * @return {function}
 */
function flattenThunk(fn) {
  return function (callbackFn) {
    function resolveThunk(err, result) {
      if (err) {
        callbackFn(err, undefined);
        return;
      }
      if (typeof result === 'function') {
        result(resolveThunk);
      } else {
        callbackFn(undefined, result);
      }
    }
    fn(resolveThunk);
  }
}
// Usage example
function fn1(callbackFn) {
  setTimeout(() => {
    callbackFn(null, 'ok');
  }, 10);
}
function fn2(callbackFn) {
  setTimeout(() => {
    callbackFn(null, fn1);
  }, 10);
}
function fn3(callbackFn) {
  setTimeout(() => {
    callbackFn(null, fn2);
  }, 10);
}
flattenThunk(fn3)((err, data) => {
  console.log(data); // 'ok'
});
以上就是回调 - JavaScript 挑战的详细内容,更多请关注php中文网其它相关文章!
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号