getJSON done回调
我有函数bellow每5秒调用一次从服务器获取数据,这是flask/python。我的问题是,如何调整getjson调用以在成功检索数据时进行回调。getJSON done回调
我知道那里有.done .fail等等,但我想知道如果我可以保留这个结构,只是添加下面的结构,但我不知道在这种情况下的语法,希望这不是太感到困惑,感谢阅读,这是代码。
// get data from the server every getDataFromServerInterval milliseconds var getDataFromServerInterval = 5000;
function getData(){
// request timesince table entries from server for user...
$.getJSON($SCRIPT_ROOT + '/_database', {
action: "getUserTable_timesince",
username: $('input[name="username"]').val()
}, function(data) { // do something with the response data
timesince_dataBuffer = data;
});
return false; // prevent get
}
// get data from the server every getDataFromServerInterval milliseconds
setInterval(getData, getDataFromServerInterval);
回答:
我发现的部分解决方案,我发现我可以在一个处理所接收的数据的功能,这是有点相当于在不同的getJSON呼叫结构.done的末尾添加一个回调,我还不确定在接收数据之前还是之后调用该函数。
// global timesince buffer, holds var timesince_dataBuffer;
// get data from the server every getDataFromServerInterval milliseconds
var getDataFromServerInterval = 5000;
function getData(){
// request timesince table entries from server for user
$.getJSON($SCRIPT_ROOT + '/_database', {
action: "getUserTable_timesince",
username: $('input[name="username"]').val()
}, function(data) { // do something with the response data
timesince_dataBuffer = data;
updateEntryStruct(); // the hope is to call this when data is received
});
return false; // prevent get
}
// get data from the server every getDataFromServerInterval milliseconds
setInterval(getData, getDataFromServerInterval);
回答:
你可以这样做。不要处理getData
中的数据或使用回调,请利用$.getJSON
返回的承诺。有一个单独的函数,由调用数据的超时调用,then
处理它。它整齐地将你的代码分离成更多可管理的功能。
var getDataFromServerInterval = 5000; function getData() {
return $.getJSON($SCRIPT_ROOT + '/_database', {
action: "getUserTable_timesince",
username: $('input[name="username"]').val()
}
}
function wrangleData() {
getData().then(function (data) {
console.log(data);
});
}
setInterval(wrangleData, getDataFromServerInterval);
回答:
这是我想出的解决方案。
var timesince_dataBuffer; function getData(){
// gets user's entries from sql table
$.getJSON($SCRIPT_ROOT + '/_database', { // $SCRIPT_ROOT, root to the application
action: "getUserTable_timesince",
username: $('input[name="username"]').val()
}, function(data) { // if a response is sent, this function is called
timesince_dataBuffer = data;
updateEntryStruct(); // recreate the structure of each content, buttons etc
});
return false;
}
我得到的数据,放在一个全局变量,调用另一个函数,该函数接收到的每个对象的数据并重新创建一个结构,这样一来我不重建它是静态的结构件,最重要的是纽扣。
另一个函数每1秒调用一次,它更新动态部分。 (格式化的时间),因为 (事件名称)传送
无论如何,这实际上是我在CS50最后一个项目,我开始通过表单提交的服务器进行通信,每个用户按下一个按钮时刷新页面,则我是用ajax做的,但是我每2秒向服务器发送一次请求,并且没有响应按钮,因为我会在一定的时间间隔内自己重新创建按钮。 现在,网页感觉反应迅速,效率很高,这是一次很棒的学习体验。
如果有人想查看代码,一切都在这里。 https://github.com/silvermirai/cs50-final-project
它基本上是一堆随机功能,想到了。 该应用程序可以在这里找到截至目前。 http://ide502-silvermirai.cs50.io:8080/
以上是 getJSON done回调 的全部内容, 来源链接: utcz.com/qa/258955.html