я сделать вызов функции, составляющим Ajax вызов, как это:Когда можете использовать. Then использовать текущее возвращаемое значение?
send.startMonitoring({'fetchMethod': 'notificationInterval', 'lastmodif':0}).then(function(value){
console.debug(value);
});
Но ошибка, я получаю это:
Uncaught TypeError: Cannot read property 'then' of undefined in jquery
Как и выше, я звоню startMonitoring функция, находящаяся на другой странице и передающая объект для создания ajax-вызова на сервер. Эта функция возвращает значение с сервера, и я хочу что-то с ней сделать. Вот почему я пытаюсь использовать. Then для обработки возвращаемого значения.
Since I'm getting the above error, how could I modify it so that returned value can be processed? Also how and when I can use .then()?
var interface = (function(config) {
return {
transporter: function(options) {
return config.ajax(options);
},
startMonitoring: function(options) {
var PERIOD_NOT_VISIBLE = 60000;
var PERIOD_VISIBLE = 5000;
var timer = 0;
var timestring = 0;
(function callThis(timestamp) {
interface.transporter(options).then(function(value) {
if (value[1].notification[0].output == null) {
timestring = value[1].notification[0].lastmodif;
console.log(timestring);
return value;
}
}).catch(function(e) {
});
timer = setTimeout(function(){
callThis();
if (interface.isMonitoring() == 0) {
clearTimeout(timer);
}
}, (document.hidden) ? PERIOD_NOT_VISIBLE : PERIOD_VISIBLE);
})();
}
};
})(settings);
Это как Ajax звонки сделаны:
ajax: function(opt) {
var defaultData = settings.getDefaultDataset();
var self = this;
var opt = $.extend({}, defaultData, opt);
var output = [];
return new Promise(function(resolve, reject) {
token = window.es.token;
opt[token] = "1";
jQuery.ajax({
method: "POST",
url: self.system.path+"/index.php",
"data": opt,
error: function() {
reject('error');
},
success: function(result) {
output.push(opt, result);
resolve(output);
}
});
});
}
что делает функцию 'send.startMonitoring' вернуться ...' Эта функция возвращает значение из server' - явно нет. .. Я уверен, что это вопрос «как вернуть значение из асинхронного вызова» - проблема в коде, который вы ** не указали ** показано –
Возможный дубликат [Как вернуть ответ от асинхронного вызова?] (http://stackoverflow.com/questions/14220321/how-do-return-the-response-from-an-asynchronous-call) –
'как и когда я могу использовать .then()' когда объект, re using '.then()' on - это объект с свойством, называемым 'then', который является' functi on' –