Я пишу следующую функцию, и мне нужно вернуть myJsonString
. Когда я выполняю функцию, он запускает асинхронно. Для этого синхронно Я использовал when()
, then()
, но все равно ничего не возвращает.Возврат в функции обратного вызова в js
Просьба предложить способ.
var myJsonString;
var items = [];
function getConfig() {
$.when(offlinedb.configuration.toArray(function (documents) {
$.each(documents, function (i, aaa) {
var obj = {};
var temp = aaa.Property;
var tempObj = aaa.Value;
obj[temp] = tempObj;
items.push(obj);
});
myJsonString = JSON.stringify(items);
})).then(function (y, yy) {
console.log(myJsonString);
// return does not work here..
});
return myJsonString;
}
Отредактированный мой код:
var items = [];
var myJsonString;
function getConfig(){
return offlinedb.configuration.toArray()
.then(function(documents) {
$.each(documents,function (i,aaa){
var obj={};
var temp=aaa.Property;
var tempObj= aaa.Value;
obj[temp]=tempObj;
items.push(obj);
});
myJsonString = JSON.stringify(items);
return myJsonString;
});
}
You не возвращайте вещи в AJAX, вы делаете вещи внутри обратных вызовов. Попытка сделать синхронные запросы AJAX не является хорошим советом, зачем использовать AJAX в первую очередь? Читайте здесь для получения дополнительной информации http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call – elclanrs
Я не использую AJAX. Я упомянул, что использую Javascript – xTMNTxRaphaelx
it должен работать, вы получаете сообщение об ошибке на консоли? также попробуйте поместить в него инструкции console.log(), чтобы увидеть, что происходит. –