当前位置: 首页> 财经> 股票 > 上海网页设计公司哪儿济南兴田德润有活动吗_自己怎么做宣传片视频_徐州网站设计_百度搜图

上海网页设计公司哪儿济南兴田德润有活动吗_自己怎么做宣传片视频_徐州网站设计_百度搜图

时间:2025/7/9 18:06:50来源:https://blog.csdn.net/qq_55018264/article/details/142874115 浏览次数:1次
上海网页设计公司哪儿济南兴田德润有活动吗_自己怎么做宣传片视频_徐州网站设计_百度搜图

什么是promise

在 JavaScript 中,Promise 是一种用于处理异步操作的对象。它表示一个尚未完成的操作,但可以在未来某个时间点完成或失败。Promise 使得异步代码更加简洁和直观,尤其是在需要处理多个回调函数时,它可以有效避免回调地狱(callback hell)。

Promise 的三种状态:

Pending(待定)
Promise 刚创建,操作尚未完成,此时既没有成功,也没有失败。
Fulfilled(已完成)
异步操作成功完成,Promise 返回成功结果。
Rejected(已拒绝):
异步操作失败,Promise 返回失败原因。

Promise 的基本用法

创建

    // 异步操作let success = true;if (success) {resolve("操作成功");} else {reject("操作失败");}
});
//在这个例子中,resolve 用于表示操作成功,reject 用于表示操作失败。

Promise 构造函数接收一个执行函数(executor),该函数有两个参数:resolve 和 reject。

Promise 的使用(then 和 catch)

promise.then(function(result) {console.log("成功:", result);}).catch(function(error) {console.log("失败:", error);});
//.then() 方法在 Promise 成功时调用,并接收成功结果作为参数。
//.catch() 方法在 Promise 失败时调用,并接收失败原因作为参数。

Promise 的使用(使用async 和 await)

async/await 是 JavaScript 中用于处理异步操作的语法糖,它建立在 Promise 的基础之上,使得异步代码看起来更像同步代码,从而提高代码的可读性和可维护性

async function fetchDataAsync() {try {const data = await fetchData();console.log(data);} catch (error) {console.error(error);}
}fetchDataAsync();

async 函数:在函数声明前添加 async 关键字,表明这个函数是异步的。async 函数默认返回一个 Promise,即使函数内部没有显式返回 Promise 对象。

await 表达式:只能在 async 函数内部使用,用于等待一个 Promise 被解决(resolved)或拒绝(rejected)。await 会暂停 async 函数的执行,直到 Promise 处理完成,然后返回结果。

Promise 链式调用

Promise 的强大之处在于它支持链式调用,使得多个异步操作可以顺序执行,而不用陷入回调嵌套的困境。例如:

let promise = new Promise(function(resolve, reject) {setTimeout(() => resolve(1), 1000); // 模拟异步操作
});promise.then(function(result) {console.log(result); // 1return result * 2;}).then(function(result) {console.log(result); // 2return result * 2;}).then(function(result) {console.log(result); // 4});//例子中,每个 .then() 都返回一个新的 Promise,并将结果传递给下一个 .then(),这就是链式调用的原理

Promise 的重要方法

Promise.all()

Promise.all() 方法接收一个包含多个 Promise 的数组,只有当所有 Promise 都成功时,它才会返回成功结果;如果其中一个失败,则整个 Promise.all() 失败。

let promise1 = Promise.resolve(3);
let promise2 = new Promise((resolve, reject) => setTimeout(resolve, 1000, 'foo'));
let promise3 = 42;Promise.all([promise1, promise2, promise3]).then((values) => {console.log(values); // [3, 'foo', 42]});

Promise.race()

Promise.race() 返回第一个完成(无论成功还是失败)的 Promise

let promise1 = new Promise((resolve, reject) => setTimeout(resolve, 500, "第一个"));
let promise2 = new Promise((resolve, reject) => setTimeout(resolve, 100, "第二个"));Promise.race([promise1, promise2]).then((result) => {console.log(result); // 第二个});

Promise.allSettled()

Promise.allSettled() 不管是成功还是失败,它都会等待所有的 Promise 完成,并返回每个 Promise 的结果状态

let promise1 = Promise.resolve("成功");
let promise2 = Promise.reject("失败");Promise.allSettled([promise1, promise2]).then((results) => results.forEach((result) => console.log(result)));

结果:
{ status: ‘fulfilled’, value: ‘成功’ }
{ status: ‘rejected’, reason: ‘失败’ }

关于更多promise的介绍,大家可以去看《你所不知道的JavaScript》中册

关键字:上海网页设计公司哪儿济南兴田德润有活动吗_自己怎么做宣传片视频_徐州网站设计_百度搜图

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: