我正在写一些与我不拥有的库代码交互的Javascript,并且不能(合理地)改变.它创建了Javascript超时,用于在一系列限时问题中显示下一个问题.这不是真正的代码,因为它超出了所有希望.这是图书馆正在做的事情:
....
// setup a timeout to go to the next question based on user-supplied time
var t = questionTime * 1000
test.currentTimeout = setTimeout( showNextQuestion(questions[i+1]), t );
Run Code Online (Sandbox Code Playgroud)
我想questionTime * 1000通过询问创建的计时器在屏幕上放置一个进度条setTimeout.唯一的问题是,似乎没有办法做到这一点.有没有getTimeout我失踪的功能?我能找到的关于Javascript超时的唯一信息仅与创建通过setTimeout( function, time)和删除通过有关clearTimeout( id ).
我正在寻找一个函数,它返回超时触发前剩余的时间,或者调用超时后经过的时间.我的进度条形码如下所示:
var timeleft = getTimeout( test.currentTimeout ); // I don't know how to do this
var $bar = $('.control .bar');
while ( timeleft > 1 ) {
$bar.width(timeleft / test.defaultQuestionTime * 1000);
}
Run Code Online (Sandbox Code Playgroud)
tl; dr: …
我是.Net 4.0的任务的新手,我无法找到我认为基于任务的替换或实现定时器,例如定期任务.有这样的事吗?
更新 我提出了我认为是我的需求的解决方案,即将"计时器"功能包装在具有子任务的任务中,所有任务都利用CancellationToken并返回任务以便能够参与进一步的任务步骤.
public static Task StartPeriodicTask(Action action, int intervalInMilliseconds, int delayInMilliseconds, CancellationToken cancelToken)
{
Action wrapperAction = () =>
{
if (cancelToken.IsCancellationRequested) { return; }
action();
};
Action mainAction = () =>
{
TaskCreationOptions attachedToParent = TaskCreationOptions.AttachedToParent;
if (cancelToken.IsCancellationRequested) { return; }
if (delayInMilliseconds > 0)
Thread.Sleep(delayInMilliseconds);
while (true)
{
if (cancelToken.IsCancellationRequested) { break; }
Task.Factory.StartNew(wrapperAction, cancelToken, attachedToParent, TaskScheduler.Current);
if (cancelToken.IsCancellationRequested || intervalInMilliseconds == Timeout.Infinite) { break; }
Thread.Sleep(intervalInMilliseconds);
}
};
return Task.Factory.StartNew(mainAction, cancelToken);
}
Run Code Online (Sandbox Code Playgroud) 我想在我的云中为多个服务器制作BIT(内置测试).我需要请求在大超时时失败.
我应该如何用java做到这一点?
尝试类似下面的东西似乎不起作用.
public class TestNodeAliveness {
public static NodeStatus nodeBIT(String elasticIP) throws ClientProtocolException, IOException {
HttpClient client = new DefaultHttpClient();
client.getParams().setIntParameter("http.connection.timeout", 1);
HttpUriRequest request = new HttpGet("http://192.168.20.43");
HttpResponse response = client.execute(request);
System.out.println(response.toString());
return null;
}
public static void main(String[] args) throws ClientProtocolException, IOException {
nodeBIT("");
}
}
Run Code Online (Sandbox Code Playgroud)
- 编辑:澄清正在使用的库 -
我正在使用apache的httpclient,这是相关的pom.xml部分
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.0.1</version>
<type>jar</type>
</dependency>
Run Code Online (Sandbox Code Playgroud) 我正在尝试在没有运气的情况下使用http.request的HTTP客户端设置超时.到目前为止我所做的是这样的:
var options = { ... }
var req = http.request(options, function(res) {
// Usual stuff: on(data), on(end), chunks, etc...
}
/* This does not work TOO MUCH... sometimes the socket is not ready (undefined) expecially on rapid sequences of requests */
req.socket.setTimeout(myTimeout);
req.socket.on('timeout', function() {
req.abort();
});
req.write('something');
req.end();
Run Code Online (Sandbox Code Playgroud)
任何提示?
我正在编写一个利用JavaScript超时和间隔来更新页面的应用程序.有没有办法看到设置了多少间隔?我想通过设置数百个间隔来确保我不会意外地杀死浏览器.
这甚至是个问题吗?
我最近更新到Android Studio 2.3,现在当我尝试运行应用程序时,模拟器不会联机.它在300秒后超时.
此外,该应用程序一直遇到致命异常错误(OOM),我不知道如何解决这个问题,或者如果这是模拟器问题的一部分.
任何帮助深表感谢.同样,我对该计划的了解非常有限,所以如果你的答案可以保持简单,那就太棒了.
我们遇到了一个代码块的问题,这个代码块在数据库缓慢的情况下响应很差(它在查询超时时瘫痪).我们已经创建了一个补丁,并且正在通过回归运行它.
我们不能超时.我已经从SQL Mgmt Studio打开了一个事务并更新了每一行来锁定它们,但这并不会导致INSERT超时(这就是我需要的).
我可以通过T-SQL轻松获得表级锁吗?或者我必须在主人身边摆弄?或者我可以轻松强制超时而不锁定?任何输入都表示赞赏.
我正在尝试通过Dapper通过存储过程运行SQL备份(我的应用程序的其余部分使用Dapper,所以我更喜欢让这部分继续运行它).它工作得很好,直到CommandTimeout启动.
using (var c = SqlConnection(connstring))
{
c.Open();
var p = new DynamicParameters();
// fill out p
c.Execute("xp_backup_database", p, commandType: CommandType.StoredProcedure);
}
Run Code Online (Sandbox Code Playgroud)
我知道的唯一CommandTimeout设置是在SqlCommand中.有没有办法通过Dapper设置?
我想在输入文本框中停止输入(而不是在输入时)字符后触发事件.
我尝试过:
$('input#username').keypress(function() {
var _this = $(this); // copy of this object for further usage
setTimeout(function() {
$.post('/ajax/fetch', {
type: 'username',
value: _this.val()
}, function(data) {
if(!data.success) {
// continue working
} else {
// throw an error
}
}, 'json');
}, 3000);
});
Run Code Online (Sandbox Code Playgroud)
但是这个例子会为每个类型字符生成一个超时,如果输入20个字符,我会得到大约20个AJAX请求.
在这个小提琴上,我用简单的警报而不是AJAX来演示同样的问题.
有没有解决方案,或者我只是使用一种不好的方法?
timeout ×10
c# ×2
http ×2
javascript ×2
jquery ×2
.net ×1
.net-4.0 ×1
android ×1
dapper ×1
debouncing ×1
emulation ×1
java ×1
keypress ×1
locking ×1
node.js ×1
setinterval ×1
settimeout ×1
sql-server ×1
testing ×1
timer ×1
typeahead ×1