Мы пишем код сервера в nodejs и используя Parse javascript sdk. Часто нам нужно получить или обновить различные объекты Parse. Например, выберите пользователя с именем пользователя «Пример».Как заставить синтаксический поиск/сохранить операции синхронно?
function fetchUser(username)
{
var User = Parse.Object.extend("User");
var query = new Parse.Query("User");
query.equalTo("username",username);
query.first({
success: function(results) {
console.log("Successfully retrieved " + results.length + " scores.");
return results;
},
error: function(error) {
console.log("Error: " + error.code + " " + error.message);
}
});
}
Эта функция может быть вызвана с помощью какой-либо другой функции:
function test()
{
var user = fetchUser("example");
console.log(user); // would often print undefined
return user;
}
function top()
{
// some code
var user = test();
//some code
}
// and the function top() mmight be called by some other functions
Проблема заключается в том, что я хотел бы получить неопределенные результаты, поскольку находка/первые операции выполняется асинхронно. Есть ли способ гарантировать, что функция fetchUser() возвращается только тогда, когда операция поиска/первой успешна/завершена?
почему вы не просто обеспечить обратный вызов fetchUser и испытания? Если вы хотите иметь более читаемый код, используйте обещания вместо обратных вызовов. – Tobi
Вы не можете выполнять синхронные асинхронные операции. Невозможно сделать в Javascript. Перестань пытаться. Узнайте, как программировать асинхронно с обратными вызовами или обещаниями или переключиться на блокирующую/поточную среду, такую как Java, которая позволяет делать такие вещи, как блокирование/синхронно в потоках (с соответствующими компрометациями этой архитектуры). – jfriend00
Действительно новый для javascript. Иногда просто «просто невозможно» также является достаточно хорошим ответом. Благодарю. :) – Paagalpan