标签: settimeout

Node js Express 应用程序中使用 setTimeout 获取请求的并发性

控制台日志图片

const express = require('express');
const app = express();
const port = 4444;

app.get('/', async (req, res) => {
  console.log('got request');

  await new Promise(resolve => setTimeout(resolve, 10000));

  console.log('done');
  res.send('Hello World!');
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});
Run Code Online (Sandbox Code Playgroud)

如果我同时点击 get 请求 http://localhost:4444 三次,那么它会返回如下日志

got request
done
got request
done
got request
done
Run Code Online (Sandbox Code Playgroud)

由于节点事件循环和回调队列位于进程线程外部,它不应该以下面的方式返回输出吗?(也许我错了,但需要对 Nodes 内部结构有一些了解)和 Node 中的外部 api 请找到附图 Javascript 运行时环境

got request
got request
got request
done
done
done
Run Code Online (Sandbox Code Playgroud)

concurrency settimeout node.js

1
推荐指数
1
解决办法
672
查看次数

每秒更新 useEffect 中的状态,持续 10 秒

通过不深入实际用法,我创建了一个简单的示例来解释我想要做什么。

我有一个状态对象{num:0},我想在 10 秒内每秒更新一次 num,据此,我创建了一个工作完美的类组件。

class App extends React.Component {
  constructor() {
    super();
    this.state = {
      num: 0
    };
  }

  componentDidMount = () => {
    for (let i = 0; i < 10; i++) {
      setTimeout(() => this.setState({ num: this.state.num + 1 }), i * 1000);
    }
  };

  render() {
    return (
      <>
        <p>hello</p>
        <p>{this.state.num}</p>
      </>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

现在我想在功能组件中复制相同的功能,但我做不到。我尝试如下图所示:

const App = () => {
  const [state, setState] = React.useState({ num: 0 });

  React.useEffect(() => {
    for …
Run Code Online (Sandbox Code Playgroud)

javascript settimeout reactjs react-hooks use-effect

1
推荐指数
1
解决办法
1万
查看次数

为什么这个变量没有在setTimeout函数中设置?

嘿程序员,

我有一个基本的textarea:

<textarea id='text_comment'></div>
Run Code Online (Sandbox Code Playgroud)

我有这个功能:

$('#text_comment').live('keypress', function() {

    setTimeout(function() {
    string = $(this).val();         

         alert(string);
    }, 500);

});
Run Code Online (Sandbox Code Playgroud)

它应该警告textarea中的值,但它不会发出任何警报.

我希望它在500ms后获得textarea的值,但是如果它在setTimeout函数内部,它似乎没有设置变量.

javascript jquery settimeout jquery-selectors jquery-events

0
推荐指数
1
解决办法
1066
查看次数

Javascript:settimeout问题

当我开始我的脚本时,我有这个:

var my_great_masterpiece = new function ()
{
        var self = this;
Run Code Online (Sandbox Code Playgroud)

然后在我的脚本中我有这个:

        response_xml: function ()
        {
            if (self.http_request.readyState == 4)
            {
                if (self.http_request.status == 404 && countXmlUrl <= 3)
                {
                    countXmlUrl++;
                    self.realXmlUrl = xmlUrl[countXmlUrl];
                    self.request_xml();
                }
                if (self.http_request.status == 200)
                {
                    self.xmlDoc = self.http_request.responseXML;
                    self.storage.setItem('domains_raw_xml', self.http_request.responseText);
                    self.main.peter_save_data();
                    self.timervar = setTimeout(function ()
                    {
// ########### Below line gives the error #############################
                        self.new_version_show_window();
                    }, 2000);
                }
            }
        },
        new_version_show_window: function ()
        {
...
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

错误:self.new_version_show_window不是函数

我究竟做错了什么?

谢谢!

javascript function settimeout

0
推荐指数
1
解决办法
677
查看次数

函数setTimeout抛出错误

我的setTimeout函数有问题.这是代码:

1   var urlArray = ["pic1.gif"; "pic2.gif"]

2   function changeBackground(elementId, backgroundImage){
3       document.getElementById(elementId).style.background="url("+backgroundImage+")";
4   }

5   function mouseover_1(elementId){
6           changeBackground(elementId,urlArray[0]);
7           setTimeout("changeBackground(elementId,urlArray[1])",300);
8   }
Run Code Online (Sandbox Code Playgroud)

并在身体:

<area shape="rect" coords="0,0,95,91" onMouseOver="mouseover_1('navigator_1')">
Run Code Online (Sandbox Code Playgroud)

现在,Javascript代码中的第6行就像一个魅力(图片更改!),但第7行不起作用(没有图片更改).这是Firefox中调试的错误:

elementId is not defined  line: 7
Run Code Online (Sandbox Code Playgroud)

但是由于第6行有效,我真的不知道问题是什么.你有什么建议吗?

javascript variables settimeout

0
推荐指数
1
解决办法
139
查看次数

在使用setTimeout时,如何确保Javascript的"this"将引用该对象?

<!doctype html>
<html>
<head>
<title>What is 'this'?</title>
<script>
function Obj(){
    log('Obj instantiated');
}
Obj.prototype.foo = function (){
    log('foo() says:');
    log(this);
}
Obj.prototype.bar = function (){
    log('bar() was triggered');
    setTimeout(this.foo,300);
}
function log(v){console.log(v)}
var obj = new Obj();
</script>
</head>
<body>
    <button onclick="obj.foo()">Foo</button>
    <button onclick="obj.bar()">Bar</button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这是控制台输出:

Obj instantiated
foo() says:
Obj {foo: function, bar: function}
bar() was triggered
foo() says:
Window {top: Window, window: Window, location: Location, external: Object, chrome: Object…}
Run Code Online (Sandbox Code Playgroud)

因此,当它从setTimeout调用obj.foo时,'this'会将所有权更改为Window.如何防止该行为或正确使用该行为?

谢谢

javascript this settimeout

0
推荐指数
1
解决办法
192
查看次数

回调函数中的setTimeout不起作用

有人可以在下面的代码中找到问题

$(document).ready(function () {
    $("#leftsettingswindow").on("keyup", "#fontsize2", function () {
        setTimeout(function () {
            var txtVal = this.value;
            $('#content').css("font-size", txtVal + "%");
        }, 3000);
    });
});
Run Code Online (Sandbox Code Playgroud)

这完美无缺,

$(document).ready(function () {
    $("#leftsettingswindow").on("keyup", "#fontsize2", function () {

            var txtVal = this.value;
            $('#content').css("font-size", txtVal + "%");

    });
});
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

javascript jquery settimeout

0
推荐指数
1
解决办法
1919
查看次数

JavaScript问题:setTimeout

我正在尝试使用JavaScript和jQuery创建一个移动面板.

我做了这个工作演示,JS部分看起来像这样:

$("nav.nav").hover(function(){
    $("nav.nav").animate({left:'-5px'},100,"swing");
  },
  function(){
    $("nav.nav").animate({left:'-170px'},100,"swing");
  });
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它正在工作,但是当我离开面板时我想添加延迟,因为有一段时间,我错误地将面板留下1个像素,这很烦人.

我试着setTimeout("javascript function", milliseconds);像这样使用:

$("nav.nav").hover(function(){
    $("nav.nav").animate({left:'-5px'},100,"swing");
  }, setTimeout(function(){
      $("nav.nav").animate({left:'-170px'},100,"swing");
  },10));
Run Code Online (Sandbox Code Playgroud)

(超时中的回调函数)但它不起作用,我不知道为什么.

javascript jquery settimeout jquery-hover jquery-animate

0
推荐指数
2
解决办法
123
查看次数

可能是javascript setTimeout执行多次的原因是什么?

什么原因可能是setTimeout等待2-4次被配置执行的原因?

  var TIMEOUT  = 700;

  console.log("TIMEOUT", TIMEOUT);

  var preTimeout = new Date();
  setTimeout(function() {
    console.log("timeout took:", new Date() - preTimeout);
  }, TIMEOUT);
Run Code Online (Sandbox Code Playgroud)

这导致timeout took:网站上的1200-4000.

javascript settimeout

0
推荐指数
1
解决办法
208
查看次数

async关键字/承诺等价

这2个怎么不相同?

这不起作用.

const message = async () => {
    setTimeout(() => {
        console.log("delayed")
        return true
    }, 1000)
}
Run Code Online (Sandbox Code Playgroud)

但这样呢?

const message = () => {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            console.log("delayed")
            resolve(true)
        }, 1000)
    })
}
Run Code Online (Sandbox Code Playgroud)

这是否意味着只有在函数范围内(而不是在另一个函数中)才能在异步函数中"返回"?

异步函数返回的承诺是否与常规承诺不同?它是如何完全初始化的?

javascript asynchronous settimeout promise

0
推荐指数
1
解决办法
29
查看次数