有一天,我在JavaScript中將此函數作爲jQuery插件中對象的簡單DTO編寫。我假設如果我在該函數的末尾寫了一條通用的return gridColumns
行,則可能會在我的for
循環完成填充之前返回該陣列。所以我最後寫了這個while (true)
聲明,認爲我很聰明。如何理解JavaScript的同步性/異步性
function getGridColumns() {
var gridColumns = [];
var records = $("#jqxGrid").jqxGrid("columns").records;
for (var i = 0; i < (records.length); i++) {
var obj = {
datafield: records[i].datafield,
width: records[i].width,
cellsalign: records[i].cellsalign,
hidden: records[i].hidden
}
gridColumns.push(obj);
}
while (true) {
if (gridColumns.length == records.length {
return gridColumns;
}
}
};
我的一個朋友看了我的小「黑客」,並說,這是完全沒有必要的,我做了一些測試,並確定他是對的。
所以,這就是我所在的地方。 如何是JavaScript異步的,它怎麼樣?任何人都可以幫助我理解這種範式,以便我可以編寫更好的JavaScript?
當您對異步服務進行函數調用時,它是異步的。上面的代碼中沒有任何符合該描述。 – Pointy
@Pointy,所以async必須被明確定義,否則JavaScript將同步執行? –
感謝downvote,誰做到了。對於想要學習的人來說,真的很有建設性,就像我一樣。 –