이 게시물의 모든 코드는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!