// 成功的回调函数 function successCallback(result) { console.log(‘声音文件创建成功‘ + result) } // 失败的回调函数 function failureCallback(error) { console.log(‘声音文件创建失败‘ + error) } /* 1.1 纯回调函数 */ //启动任务(audioSettings)前必须指定回调函数(callback) createAudioFileAsync(audioSettings, successCallback, failureCallback) /* 1.2 promise */ //可在启动任务(audioSettings)后指定回调函数(callback) const promise = createAudioFileAsync(audioSettings) setTimeout(() => { promise.then(successCallback, failureCallback) }, 1000) /* 2.1 回调地狱 */ //回调函数的嵌套 doSomething(function (result) { //第一个函数function就是sucessCallback成功回调 doSomethingElse(result, function (newResult) { doThirdThing(newResult, function (finalResult) { console.log(‘Got the final result‘ + finalResult) }, failureCallback) }, failureCallback) }, failureCallback) /* 2.2 链式调用 */ doSomething().then(function (result) { //result是doSomething函数成功执行的返回值 return doSomethingElse(result) //执行器函数,同步回调 }) .then(function (newResult) { //newResult是doSomethingElse成功执行的返回值 return doThirdThing(newResult) }) .then(function (finalResult) { console.log(‘Got the final result‘ + finalResult) }) .catch(failureCallback) //统一的错误处理(异常传透) /* 2.3 async/await : 回调地狱的终极解决方案 */ //根本上去掉回调函数 async function request() { try { const result = await doSomething() const newResult = await doSomethingElse(result) const finalResult = await doThirdThing(newResult) console.log(‘Got the final result‘ + finalResult) } catch (error) { failureCallback(error) } }
原文:https://www.cnblogs.com/yaya-003/p/12786465.html