首頁 > web前端 > js教程 > 非同步 JavaScript 函數總是回傳 Promise 嗎?

非同步 JavaScript 函數總是回傳 Promise 嗎?

Patricia Arquette
發布: 2024-12-23 16:20:12
原創
346 人瀏覽過

Do Async JavaScript Functions Always Return Promises?

非同步函數與隱式 Promise 傳回

在 JavaScript 中,由 async 關鍵字標記的非同步函數傳回 Promise。即使您明確傳回非 Promise 值或根本不回傳任何內容,這也成立。

隱式 Promise 包裝器

如果您不明確回傳Promise,你回傳的值會自動包裹在一個promise中。

async function increment(num) {
  return num + 1;
}

// Logs: 4
increment(3).then(num => console.log(num));
登入後複製

這表示即使傳回值是一個數字,出於非同步處理的目的,它將被轉換為 Promise。

Unwrapped Promises

Promises 自動解包,這表示如果您確實返回在非同步函數中承諾某個值時,您將收到該值的承諾(而非針對該值的承諾)

async function increment(num) {
  return defer(() => num + 1);
}

// Logs: 4
increment(3).then(num => console.log(num));
登入後複製

不一致的行為

非同步函數的行為確實看起來與傳統的return 語句不一致,因為它在明確傳回非承諾值時有所不同。這是因為非同步函數使用稱為生成器的特殊函數,它並不總是傳回與 return 語句相同的值。

以上是非同步 JavaScript 函數總是回傳 Promise 嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板