Конечно, есть много таких подходов, как синхронный запрос, обещание, но из моего опыта я думаю, что вы должны использовать подход обратного вызова. Естественно, что асинхронное поведение Javascript. Итак, ваш фрагмент кода можно переписать немного иначе:
function foo() {
var result;
$.ajax({
url: '...',
success: function(response) {
myCallback(response);
}
});
return result;
}
function myCallback(response) {
// Does something.
}
По умолчанию _.now
является только Date.now
, за исключением сред, которые его не поддерживают. Где Date.now
не поддерживается _.now
будет использовать эту реализацию вместо этого (то же самое относится к lodash)
_.now = function() {
return (new Date()).getTime()
};
Поскольку ваш браузер поддерживает Date.now
, _.now
является просто прокси-сервером для родного реализация
Примечание: вы также можете сделать любую из ваших функций отображаемой как нативную в консоли, вызвав с помощью Function.prototype.bind
function foo() {console.log('bar');}
var bar = foo.bind(null);
console.log(bar);
// => function () { [native code] }
Возвращает целочисленную временную метку для текущего времени. Полезно для реализации функций синхронизации / анимации.
_.now();
=> 1392066795351
Взгляните на исходный код подчеркивания:
_.now = Date.now || function() {
return new Date().getTime();
};
Это означает, что он будет использовать Date.now()
, если он существует, что является внутренней функцией. В противном случае он будет использовать new Date().getTime()
, который поддерживается всеми механизмами JavaScript.