在第二个函数中检测第一个函数是否返回值
Detecting in second function if first function has returned value
我有一个JS函数,它可以进行ajax调用并连续运行
function First(ServerId)
{
var CallServer = jQuery.ajax({
type: "POST",
url: "somefile.php",
dataType: "json",
success: function(response)
{
// do something here
First(response.ServerId);
}
}};
}
在某些文件中.php有一个 60 秒的睡眠计时器,因此 ajax 调用在 60 秒后返回响应。每次返回不同的服务器 ID 时。
现在我有另一个功能,我想做这样的事情
function Second()
{
/*
wait for 5 seconds to see if function First() has returned server id
if (ServerIdIsReturned)
{
i) abort CallServer
ii) make another Ajax call (CallServer2)
iii) after CallServer2 is done, call CallServer with the returned ServerId
}
else
{
i) abort CallServer
ii) make another Ajax call (CallServer2)
iii) after CallServer2 is done, call CallServer with the ServerId as 0
}
*/
}
我不确定我是否正确解释了它,但我想检查函数Second()
函数First()
是否返回了新的服务器 ID,并相应地继续。我想我需要使用 setTimeout 并分解 Second() 函数,但不确定。
我怎样才能做到这一点?
只需调用第一个函数的成功块中的第二个函数。
success: function(response) {
// do something here
First(response.ServerId);
// proceed further
Second();
}
为了进行延迟呼叫,只需使用setTimeout(Second,5000);
在
调用之前将全局变量设置为 false,并在调用返回时将其设置为 true,然后您只需检查该变量即可
为什么不直接使用 jQuery ajax 调用的内置超时功能 - 设置 5 秒超时,然后添加一个错误处理程序 - 检查超时并在适当的情况下再次调用。
var CallServer = jQuery.ajax({
type: "POST",
url: "somefile.php",
timeout:5000,
dataType: "json",
success: function(response)
{
// do something here
First(response.ServerId);
},
complete(jqXHR, textStatus)
{
if (textStatus === "timeout")
{
Second();
}
}
}};
相关文章:
- PhantomJS - 检查javascript函数是否正在运行的任何方法
- 如何检查这个代码点火器php函数是否工作,该函数是否在ajax url中使用
- 如何检查函数是否将运行或可用
- JavaScript尾部调用中的函数是否经过优化
- 当提供函数名称时,检查函数是否存在于同一作用域中
- 是否可以测试javascript函数是否是构造函数
- JavaScript-确定数学函数是否为无穷大
- jQuery-有没有一种方法可以测试函数是否异步
- 作用域问题-此函数是否形成闭包-JavaScript
- 如何检查该函数是否从外部js文件调用
- 什么更快?运行空函数或检查函数是否未定义
- 箭头函数是否像命名函数一样进行了优化
- JavaScript setInterval函数:是否存在错误
- 如何判断被调用的函数是否源自javascript中的点击事件
- jquery remove函数是否也删除了敲除绑定
- 如何使用jsoup检测内联js函数?我基本上想检查内联函数是否存在
- 当执行进入页面时,JavaScript history.back()函数是否生成HttpRequest
- 在动态更改数据之后(在ajax调用之后)检查函数是否存在
- 检查函数是否属于javascript中的function类型
- 从对象中调用的函数是否可以访问该对象的作用域