让同步代码等待异步代码
时间: 2024-10-16 16:04:02 浏览: 16
在编程中,让同步代码等待异步操作完成通常需要使用回调函数、承诺(Promises)、未来(Future)或者async/await语法。这里以JavaScript为例说明:
1. **回调函数**:当处理异步任务时,你可以传递一个回调函数作为参数,这个函数会在任务完成后被调用。
```javascript
function asyncFunction(callback) {
setTimeout(() => {
callback('Task completed');
}, 2000);
}
asyncFunction(result => {
console.log(result); // 输出 'Task completed',2秒后
});
```
2. **Promise**:异步操作返回一个Promise对象,可以使用`.then`或`.catch`方法来注册回调,在Promise解析成功或失败后执行。
```javascript
function asyncFunction() {
return new Promise((resolve, reject) => {
setTimeout(() => resolve('Task completed'), 2000);
});
}
asyncFunction().then(result => {
console.log(result); // 输出 'Task completed',2秒后
});
```
3. **async/await**:ES7引入了async关键字,配合await关键字可以在async函数内部暂停执行直到Promise解决。
```javascript
async function asyncFunction() {
await new Promise(resolve => setTimeout(resolve, 2000));
console.log('Task completed');
}
(async () => {
await asyncFunction();
})();
```
阅读全文