Saya dapat menandai fungsi javascript sebagai "async" (yaitu mengembalikan janji) dengan async
kata kunci. Seperti ini:
async function foo() {
// do something
}
Apakah sintaks setara untuk fungsi panah?
javascript
promise
async-await
arrow-functions
BonsaiOak
sumber
sumber
var foo = async () => await Promise.resolve('ha');
- bekerja dengan baikit doesn't work
tidak ada artinya ... apakah Anda mendapatkan kesalahan? mungkin Anda melakukan sesuatu yang salah, tanpa kode yang "tidak berfungsi" dan deskripsi yang bermakna tentang bagaimana itu tidak berfungsi, hanya dapat menebak bahwa Anda melakukan sesuatu yang salah (atau menggunakan browser lama)Jawaban:
Fungsi panah Async terlihat seperti ini:
Fungsi panah Async terlihat seperti ini untuk satu argumen yang diteruskan ke sana:
Fungsi panah Async terlihat seperti ini untuk beberapa argumen yang diteruskan ke sana:
Bentuk anonim juga berfungsi:
Deklarasi fungsi async terlihat seperti ini:
Menggunakan fungsi async dalam panggilan balik :
sumber
const foo = async () => {}
membuat fungsi bernama async bernamafoo
. Sangat mungkin untuk melakukan fungsi bernama dengan cara ini (hanya tanpa mengangkat). Dalam ES2016 + penugasan fungsi anonim ke nama variabel itu setelah variabel jika dideklarasikan di sana.foo = function bar () {}
yang sangat spesifik yang dibuat untuk menggantikanarguments.callee
saat menulis fungsi anonim rekursif. Apa yang Anda miliki di sana adalah variabel bernamafoo
yang merupakan referensi ke suatu fungsi.const foo = async () => {}
nama fungsi diatur kefoo
- ecma-international.org/ecma-262/6.0/… dan ecma-international.org/ecma-262/6.0/… - lihat diskusi di esdiscuss.org / topic / ...somefunction
tidak dapat diubah setelah disetel. (Ini menunjuk ke fungsi async anonim Anda.)Ini cara termudah untuk menetapkan ekspresi
async
fungsi panah ke variabel bernama :(Perhatikan bahwa ini tidak sepenuhnya setara dengan
async function foo() { }
. Selain perbedaan antarafunction
kata kunci dan ekspresi panah , fungsi dalam jawaban ini tidak "diangkat ke atas" .)sumber
foo = function myName () {}
. NamanyamyName
dan ditentukan hanya ada di dalam fungsi anonim dan tidak didefinisikan di mana pun di luar. Tujuannya adalah untuk menggantiarguments.callee
ketika menulis fungsi anonim rekursif.foo.name === 'foo'
). Tetapi hanya karena itu adalah inisialisasi dariconst
pernyataan * * —berarti itu tidak tepat untuk menyebutnya "ekspresi fungsi panah async bernama". Anda juga benar bahwa nama ekspresi fungsi bernama hanya terikat di dalam tubuhnya sendiri, tetapi juga disimpan diname
properti fungsi , yang bagus untuk debugging (dan lebih sering menjadi alasan saya menamai mereka).fn.name
serta memiliki cakupan yang mengikat (variabel).Fungsi Panah Async Segera Diaktifkan:
Ekspresi Fungsi Async Segera Dibawa:
sumber
Async Arrow berfungsi sintaksis dengan parameter
sumber
Contoh dasar
sumber
Anda juga dapat melakukan:
sumber