GVKun编程网logo

循环的 JS 函数不等待超时(循环的 js 函数不等待超时怎么办)

13

本文将带您了解关于循环的JS函数不等待超时的新内容,同时我们还将为您解释循环的js函数不等待超时怎么办的相关知识,另外,我们还将为您提供关于c#–如何在没有抛出异常的情况下取消等待超时的任务、ios–

本文将带您了解关于循环的 JS 函数不等待超时的新内容,同时我们还将为您解释循环的 js 函数不等待超时怎么办的相关知识,另外,我们还将为您提供关于c# – 如何在没有抛出异常的情况下取消等待超时的任务、ios – 在等待超时时发送信号量信号、java – 如何避免锁等待超时超出异常?、java 程序有时会遇到等待超时,如何实现等待超时?的实用信息。

本文目录一览:

循环的 JS 函数不等待超时(循环的 js 函数不等待超时怎么办)

循环的 JS 函数不等待超时(循环的 js 函数不等待超时怎么办)

问题的答案是,setTimeout 是异步的,它不能延迟同步执行,直到除非推送保持同步。

对于这种用法,您希望使用 setInterval 而不是 setTimeout

function generateList(level) {
    //her levelda olusacak parca sayisi 1 artar
    generatedList = [];
    let counter = 0
    const interval = setInterval(generateNext,400)
}



function generateNext() {
    // bu kısım sonraki seviye için tek bir parça hazırlar
    if (counter === level) {
      clearInterval(interval)
    }
    var random = Math.floor(Math.random() * 4) + 1;
    var name = constList[random - 1];
    $("#" + name).fadeIn(100).fadeOut(100).fadeIn(100);
    playSound(name);
    generatedList.push(random);
    counter++
}
,

generateNext() 放入超时函数

setTimeout(function() {
   generateNext()
},400);

c# – 如何在没有抛出异常的情况下取消等待超时的任务

c# – 如何在没有抛出异常的情况下取消等待超时的任务

使用取消令牌取消具有超时(在超时结束之前)的任务时,将引发异常.例:
mytask.start();
bool didTaskRunInTime = mytask.wait(5 mins,_cancelToken);

这意味着我不能继续下面.

//was the task cancelled
if (_cancelToken.IsCancelRequested)
{
    // log cancel from user to file etc
}

if (didTaskRunInTime )
{
    int taskResult = myTask.Result;
    // log result to file
}
else if (!_cancelToken.IsCancelRequested)
{
    // Tell user task timed out,log a message etc
}

我将不得不在我的catch块中完成所有这些操作并且我的代码看起来很混乱.这样做的正确方法是什么?

解决方法

您可以使用该任务的数组调用 Task.WaitAny.然后,您可以对任务的状态进行操作,但方法会返回.示例代码:
using System;
using System.Threading;
using System.Threading.Tasks;

class Test
{
    static void Main()
    {
        Task sleeper = Task.Factory.StartNew(() => Thread.Sleep(100000));

        int index = Task.WaitAny(new[] { sleeper },TimeSpan.FromSeconds(0.5));
        Console.WriteLine(index); // Prints -1,timeout

        var cts = new CancellationTokenSource();

        // Just a simple wait of getting a cancellable task
        Task cancellable = sleeper.ContinueWith(ignored => {},cts.Token);

        // It doesn't matter that we cancel before the wait
        cts.Cancel();

        index = Task.WaitAny(new[] { cancellable },TimeSpan.FromSeconds(0.5));
        Console.WriteLine(index); // 0 - task 0  has completed (ish :)
        Console.WriteLine(cancellable.Status); // Cancelled
    }
}

请注意,如果任务出现故障,您应该“观察”异常,以避免在最终确定时发生爆炸:)

ios – 在等待超时时发送信号量信号

ios – 在等待超时时发送信号量信号

当dispatch_semaphore_wait运行到超时时,它会自动发出信号(增加计数),还是手动完成?

解决方法

dispatch_semaphore_wait()递减计数信号量并等待
如果结果值小于零.如果发生超时,请执行此操作
递减是相反的,因此您不必手动调整计数.

从文档中可以看出这一点(对我而言),但与之相符
负数指示线程正在等待的事实
信号.另见the source code中的评论:

// If the internal value is negative,then the absolute of the value is
// equal to the number of waiting threads. ...

您也可以通过打印的debugDescription来验证它
信号量,输出显示当前值:

let sem = dispatch_semaphore_create(0)

NSLog("%@",sem.debugDescription)
// <OS_dispatch_semaphore: semaphore[0x100514a70] = { ...,value = 0,orig = 0 }>
// --> Initial value is 0

dispatch_after(dispatch_time(disPATCH_TIME_Now,Int64(NSEC_PER_SEC)),dispatch_get_global_queue(disPATCH_QUEUE_PRIORITY_DEFAULT,0)) {
        NSLog("%@",sem.debugDescription)
        // <OS_dispatch_semaphore: semaphore[0x100514a70] = { ...,value = -1,orig = 0 }>
        // --> One thread is waiting,value is -1.
}

let ret = dispatch_semaphore_wait(sem,dispatch_time(disPATCH_TIME_Now,2*Int64(NSEC_PER_SEC)))
NSLog("%@",orig = 0 }>
// --> Time out,value is 0 again.

java – 如何避免锁等待超时超出异常?

java – 如何避免锁等待超时超出异常?

java.sql.sqlException: Lock wait timeout exceeded; try restarting tra
nsaction at com.MysqL.jdbc.sqlError.createsqlException(sqlError.java:1055)
        at com.MysqL.jdbc.sqlError.createsqlException(sqlError.java:956)
        at com.MysqL.jdbc.MysqLIO.checkerrorPacket(MysqLIO.java:3558)
        at com.MysqL.jdbc.MysqLIO.checkerrorPacket(MysqLIO.java:3490)
        at com.MysqL.jdbc.MysqLIO.sendCommand(MysqLIO.java:1959)
        at com.MysqL.jdbc.MysqLIO.sqlQueryDirect(MysqLIO.java:2109)
        at com.MysqL.jdbc.ConnectionImpl.execsql(ConnectionImpl.java:2648)
        at com.MysqL.jdbc.PreparedStatement.executeInternal(PreparedStatement.ja
va:2077)
        at com.MysqL.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:
2228)
        at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:
208)
        at org.hibernate.loader.Loader.getResultSet(Loader.java:1812)
        at org.hibernate.loader.Loader.doQuery(Loader.java:697)
        at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Lo
ader.java:259)
        at org.hibernate.loader.Loader.loadEntity(Loader.java:1885)
        ... 131 more

当我更新记录时,我越来越多地重复锁定超时超出异常.

我正在使用Java Struts 2.1 Hibernate配置.
使用的DB是MysqL.

任何人知道如何解决它?

解决方法

这里有一些建议:

>“锁定等待超时”通常发生在事务正在等待数据行更新已经被某些其他事务锁定的情况下.
大多数时候,问题出在数据库方面.可能的原因可能是不适当的表设计,大量的数据,约束等.
>请查看这个elaborate answer.

java 程序有时会遇到等待超时,如何实现等待超时?

java 程序有时会遇到等待超时,如何实现等待超时?

在程序中有时会遇到处理某一请求或行为,比如连接数据库,创建文件等,这是程序都停在这一步,如何在这设置一个等待时间,一旦超过这个等待时间,即等待超时,避免程序卡在这里,这个等待超时的问题如何实现?

关于循环的 JS 函数不等待超时循环的 js 函数不等待超时怎么办的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于c# – 如何在没有抛出异常的情况下取消等待超时的任务、ios – 在等待超时时发送信号量信号、java – 如何避免锁等待超时超出异常?、java 程序有时会遇到等待超时,如何实现等待超时?的相关知识,请在本站寻找。

本文标签: