痛点
web开发中,最常见的就是网络请求,数据库的访问等操作,和java不同的是,js是单线程,如果说,像这种I/O密集型操作比较多情况下,如果同步执行你的代码,就会造成阻塞的问题。
异步编程
异步编程是一种允许并发执行任务而不阻塞主程序执行的编程范式。 它使程序能够在等待较慢的操作(例如 I/O 操作)完成时继续运行和执行其他任务。
Web 开发中异步编程的一个流行示例是 fetch API 的使用。 这个函数是内置于 Web 浏览器中的,允许您发出 HTTP 请求以获取资源,例如来自 API 或远程服务器的数据。 它通过返回一个代表成功或者失败的 Promise 对象来支持异步操作。
小栗子
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => {
// Process the retrieved data
console.log(data);
})
.catch(error => {
// Handle any errors that occurred during the request
console.error(error);
});
解决痛点
fetch 函数向指定的 URL 发起 HTTP GET 请求。 它返回一个 Promise,该 Promise resolve从服务端返回的对象。 通过链式调用 .then() 方法,我们可以在(一旦Promise被解析后,有兴趣的小伙伴可以详细了解Promise的各个状态)就可以立即执行回调函数。
第一个 .then() 回调接收 Response 对象并调用其 .json() 方法将响应主体解析为 JSON。 它返回另一个Promise(解析为JSON 数据) 。 第二个 .then() 回调接收此数据并执行进一步处理。
如果在请求期间发生错误,将触发 .catch() 方法,可以捕获处理错误。
fetch 的异步特性 就是 允许主程序 可以 在发送 HTTP 请求 和 接收响应的 同时继续执行("并行")。 这样,在响应到达之前,其他任务可以在不阻塞的情况下执行。 一旦响应可用,就会执行相应的回调函数。
通过使用 fetch 等异步编程技术,您可以避免在等待 I/O 操作完成时阻塞程序的执行,从而更有效地利用资源并提高整体性能。
总结:一些比较重要的点,已经加粗方便各位理解,web应用的优化方面很多很多,时间有限,这里仅以此方面做解释。