主干 JavaScript setTimeOut 方法
backbone javascript setTimeOut method
im 的方法 setTimeOut 有一个问题,该方法调用函数 self 并设置延迟,每个请求完成后应该一次又一次地调用该函数,但它只运行一次。它在不使用骨干网的情况下工作.js不知道它在与骨干网集成后不起作用.js。任何帮助不胜感激!
所以这是客户端中的一个函数,它运行一个 GET 请求从服务器获取数据,请求在一个时间间隔内运行(在服务器中决定),一旦数据进入,客户端就会得到它,然后请求再次运行。
getRequest:function() {
var XHR = $.ajax({
url: '/nextdocument',
type: 'GET',
async: true,
cache: false,
timeout: 11000,
success:function(data) {
var name = data.description;
var price = data.price;
console.log("read--> " + name + price);
setTimeout("this.getRequest", 1000);
if (data.ok == "true") {
data["ok"] = data.ok;
$.ajax(
{
url: "/customerdone",
data: JSON.stringify(data),
processData: false,
type: 'POST',
contentType: 'application/json'
}
)
}else{
//no document if no read in
console.log("error--> " + data.errorMessage)
}
}
})
return XHR;
}
问题是您在setTimeout
调用中使用了"this"。你不能这样做,因为当计时器执行你尝试引用的函数时,"this"将是全局对象。
就像其他人建议的那样,您需要将实际函数传递给计时器,而不是字符串。 然后,您可以从所需的任何对象中引用任何函数。
可能没有调用函数 getRequest。据我所知,这是因为您正在向setTimeout函数发送一个字符串 - "this.getRequest"。根据经验,永远不要将字符串传递给此,传递函数。虽然,在某些情况下它可能完全没问题(无论如何我都不会推荐它),这里的"这个"可能会造成麻烦。使用类似这样的东西:
getRequest:function() {
var fn = arguments.callee;
var XHR = $.ajax({
url: '/nextdocument',
type: 'GET',
async: true,
cache: false,
timeout: 11000,
success:function(data) {
var name = data.description;
var price = data.price;
console.log("read--> " + name + price);
setTimeout(fn, 1000);
if (data.ok == "true") {
data["ok"] = data.ok;
$.ajax(
{
url: "/customerdone",
data: JSON.stringify(data),
processData: false,
type: 'POST',
contentType: 'application/json'
}
)
}else{
//no document if no read in
console.log("error--> " + data.errorMessage)
}
}
})
return XHR;
}
相关文章:
- 添加一个setTimeout方法会使jQuery悬停方法忽略setTimeout方法中的函数
- I'我用setTimeout加载脚本,你能找到一个更快的方法吗
- 将setTimeout()包装器实现为Element.prototype中的方法
- javascript在html元素方法运行setTimeout后返回此消息
- setTimeout方法的工作原理很奇怪
- setTimeOut() 或 setInterval() .4种方法应用相同的东西.哪个是最好的
- 在setTimeout中执行jQuery成员函数而不关闭的方法
- 为什么这个 setTimeout() 方法在这个函数中不起作用
- Node.js-有没有一种方法可以访问传递给'setTimeout'使用返回的timeoutObject
- css 可见性属性和 javascript setTimeout 方法出错
- 为什么当我调用 Meteor.setTimeout() 时,我后续的 Meteor 方法调用不会等待第一个方法完成
- SAPUI5 setTimeout() --> Object 没有方法
- 不使用 setTimeout 方法的实时注释
- 主干 JavaScript setTimeOut 方法
- 在 javascript 对象中使用方法的值以在 setTimeout 函数中使用
- 为什么javascript方法在与setTimeout一起使用时会失去与对象的连接
- 处理setTimeout(javascript)中的对象方法函数调用
- 是否可以使“;值“;Javascript中setTimeout()方法中的self-increase
- 在测试JavaScript时,有比setTimeout更好的方法来等待asnyc回调
- 传递给setTimeout的函数fn不是作为函数调用的,而是作为类似window.fn()的方法调用的