發(fā)布于:2021-01-14 10:08:48
0
300
0
在新的語法,功能和使用外部庫的負(fù)載的當(dāng)前JavaScript環(huán)境中,似乎比以往任何時候都更難確定要給您的函數(shù)什么甚至數(shù)據(jù)代表什么。當(dāng)然,我們提出了Flow和TypeScript來提供幫助,但是我們不能指望那些總是可用的。這就是為什么我喜歡使用JavaScript進(jìn)行自己的檢測,尤其是在涉及函數(shù)類型時。
要檢測一個函數(shù)是生成器函數(shù)還是異步生成器函數(shù),可以使用以下代碼:
// Sample generator function
function* sampleGenerator() {}
sampleGenerator.constructor.name
// "GeneratorFunction"
async function* sampleGenerator() {}
sampleGenerator.constructor.name
// "AsyncGeneratorFunction"
巧合的是,您還可以使用以下命令檢測常規(guī)的異步功能:
async function asyncThing() {}
asyncThing.constructor.name
// "AsyncFunction"
了解您使用的代碼是同步,異步還是生成器始終很重要,但是如果您使用的是外部庫或要編寫全面的測試,則可能需要進(jìn)行這些類型的檢測。