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

回到顶部