JavaScript异步编程主要有以下几种方法:
- 回调函数(Callback functions):这是最基本的异步编程方法,通过将一个函数作为参数传递给另一个函数,在异步操作完成后调用该回调函数。例如:
function asyncOperation(callback) { setTimeout(() => { const result = '异步操作完成'; callback(result); }, 1000); } asyncOperation((result) => { console.log(result); });
- Promise:Promise是一种更高级的异步编程方法,它表示一个异步操作的最终结果。Promise可以让你更容易地组织和处理异步操作的成功和失败情况。例如:
function asyncOperation() { return new Promise((resolve, reject) => { setTimeout(() => { const result = '异步操作完成'; resolve(result); }, 1000); }); } asyncOperation().then((result) => { console.log(result); }).catch((error) => { console.error(error); });
- async/await:async/await是基于Promise的一种更简洁的异步编程方法。通过使用async和await关键字,你可以像编写同步代码一样编写异步代码。例如:
async function main() { try { const result = await asyncOperation(); console.log(result); } catch (error) { console.error(error); } } main();
- 事件监听(Event listeners):这种方法主要用于处理用户交互事件或浏览器事件,例如点击、滚动等。通过为元素添加事件监听器,当事件触发时,会执行相应的回调函数。例如:
document.getElementById('myButton').addEventListener('click', () => { console.log('按钮被点击'); });
- Promise.all() 和 Promise.race():Promise.all() 方法用于处理多个异步操作,当所有操作都完成时,返回一个包含所有操作结果的数组。Promise.race() 方法用于处理多个异步操作,当第一个操作完成时,返回该操作的结果。例如:
const promise1 = asyncOperation1(); const promise2 = asyncOperation2(); Promise.all([promise1, promise2]).then(([result1, result2]) => { console.log(result1, result2); }); // 或者 Promise.race([promise1, promise2]).then((result) => { console.log(result); });