На днях я написал эту функцию в JavaScript как простой DTO для объекта из плагина jQuery. Я предположил, что если бы я написал общую строку 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, поэтому aync должен быть явно определен, иначе JavaScript будет выполняться синхронно? –
И спасибо за нисходящее, кто бы это ни сделал. Действительно конструктивен для людей, которые хотят учиться, как и я. –