TypeScript 中,Promise
<p>在 TypeScript 中,Promise 是用于处理异步操作的对象。它表示一个可能在未来某个时间点完成或失败的操作,并返回操作结果或错误。</p><p>Promise 可以有三种状态:</p>
<ol>
<li>pending(进行中):Promise 的初始状态,表示操作正在进行中。</li>
<li>fulfilled(已完成):表示操作成功完成。</li>
<li>rejected(已拒绝):表示操作失败。</li>
</ol>
<p>创建 Promise 对象时,需要传递一个执行器函数(executor function),它接受两个参数:resolve 和 reject。通过调用 resolve 函数,可以将 Promise 状态从 pending 变为 fulfilled,并传递操作结果。通过调用 reject 函数,可以将 Promise 状态从 pending 变为 rejected,并传递操作失败的原因。</p>
<p>Promise 提供了链式调用的机制,可以通过 then 方法注册成功状态的处理函数,通过 catch 方法注册失败状态的处理函数。这样可以对异步操作进行更加清晰和结构化的处理。</p>
<p>下面是一个使用 Promise 的示例:</p>
<div class="cnblogs_Highlighter">
<pre class="brush:csharp;gutter:true;">function fetchData(): Promise<string> {
return new Promise<string>((resolve, reject) => {
setTimeout(() => {
const data = 'Data fetched successfully';
if (data) {
resolve(data); // 模拟操作成功
} else {
reject(new Error('Failed to fetch data')); // 模拟操作失败
}
}, 2000);
});
}
fetchData()
.then((data) => {
console.log(data); // 在操作成功时打印结果
})
.catch((error) => {
console.error(error); // 在操作失败时打印错误信息
});
</pre>
</div>
<p> </p>
<div class="cnblogs_Highlighter sh-gutter">
<div>
<div id="highlighter_313454" class="syntaxhighlightercsharp"><span style="background-color: rgba(255, 255, 255, 1); font-size: 14px"> </span></div>
</div>
</div>
<div class="group w-full text-gray-800 dark:text-gray-100 border-b border-black/10 dark:border-gray-900/50 bg-gray-50 dark:bg-[#444654]">
<div class="flex p-4 gap-4 text-base md:gap-6 md:max-w-2xl lg:max-w-xl xl:max-w-3xl md:py-6 lg:px-0 m-auto">
<div class="relative flex w- flex-col gap-1 md:gap-3 lg:w-">
<div class="flex flex-grow flex-col gap-3">
<div class="min-h- flex flex-col items-start gap-4 whitespace-pre-wrap break-words">
<div class="markdown prose w-full break-words dark:prose-invert light">
<p>在上述示例中,fetchData 函数返回一个 Promise 对象,用于模拟异步获取数据的操作。通过调用 then 方法注册成功状态的处理函数,该函数会在操作成功时被调用,并接收操作结果作为参数。通过调用 catch 方法注册失败状态的处理函数,该函数会在操作失败时被调用,并接收错误信息作为参数。</p>
<p>Promise 还提供了其他方法,如 finally 方法用于注册无论操作成功还是失败都要执行的处理函数,以及静态方法如 all、race、resolve 和 reject 等,用于处理多个 Promise 对象的组合和创建。</p>
<p>使用 Promise 可以更好地处理异步操作的结果和错误,避免回调地狱,使代码更加可读和可维护。</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="qb-sougou-search" style="display: none; opacity: 0">
<p>翻译</p>
<p class="last-btn">搜索</p>
<p class="last-btn">复制</p>
</div>
</div>
<div id="MySignature" role="contentinfo">
欢迎讨论,相互学习。
cdtxw@foxmail.com<br><br>
来源:https://www.cnblogs.com/txwtech/p/18098181
頁:
[1]