回调:setTimeout() promise async/await: async function show() {} ... show().then(); ... fetch:
时间: 2024-03-15 16:43:24 浏览: 87
promise和async调用顺序总结
好的,这个问题涉及到JavaScript中的一些异步编程相关的知识点,我会逐一解答。
1. 回调:setTimeout()
回调函数是一种常见的异步编程方式,setTimeout()函数是一个典型的例子。setTimeout()可以在指定的时间之后执行一个回调函数,用法如下:
```
setTimeout(callback, delay);
```
其中,callback是一个回调函数,delay是一个延迟时间,单位是毫秒。当延迟时间到达时,JavaScript引擎会将回调函数加入到事件队列中,等待执行。
2. promise
Promise是一种异步编程的模式,它可以解决回调函数嵌套过多的问题。Promise对象表示一个异步操作的最终完成或失败,并返回一个值。Promise有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。当异步操作完成时,Promise会进入fulfilled状态,如果出现错误则会进入rejected状态。可以通过then()方法来注册回调函数,处理Promise对象的状态变化。
3. async/await:
async/await是ES7中新增的语法,它使得异步代码的写法更加优雅。async用于声明一个异步函数,await则用于等待一个Promise对象的结果。async函数返回一个Promise对象,可以使用then()方法来注册回调函数。
例如:
```
async function show() {
const result = await Promise.resolve("hello");
console.log(result);
}
show();
```
这段代码中,show()函数是一个异步函数,它等待Promise.resolve()返回的结果。当Promise对象的状态变为fulfilled时,show()函数会继续执行,并打印出"hello"。
4. fetch:
fetch是一种用于发送HTTP请求的API,它返回一个Promise对象。fetch()函数接受一个URL参数,可以指定请求的地址。fetch()函数返回的Promise对象可以使用then()方法来注册回调函数,处理返回的结果。
例如:
```
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
```
这段代码中,fetch()函数发送了一个HTTP请求,请求的地址是https://api.example.com/data。当服务器返回响应时,fetch()函数会返回一个Response对象,我们可以使用response.json()方法将响应体解析为JSON对象。然后我们可以使用then()方法来处理JSON对象。如果发生了错误,我们可以使用catch()方法来捕获异常。
阅读全文