节点js。在一段时间间隔后没有获得值

时间:2018-01-25 07:09:23

标签: javascript node.js

我有一个函数sha1,每当页面加载时,sha1函数将运行,这应该在5秒后运行。

var crypto = require('crypto');
console.log(sha1());
setTimeout(sha1, 5000);
console.log(sha1());

function sha1() {
    var dt = dateTime.create();
    var ency_date = dt.format('Y-m-d H:M:S');
    var generator = crypto.createHash('sha1');
    generator.update(ency_date)
    return generator.digest('hex')
}

现在我没有等待5秒钟。两个条件同时运行。

3 个答案:

答案 0 :(得分:3)

setTimeout没有睡觉。

您的代码执行此操作:

  1. 致电sha1并记录其返回值
  2. 设置为在5秒内调用sha1
  3. 致电sha1并记录其返回值
  4. 5秒后sha1调用setTimeout ...并且没有记录任何内容,因为您没有代码可以记录它。
  5. 它并不完全清楚你想要的结果是什么,但听起来你想要的东西是这样的:

    
    
    console.log(sha1());
    setTimeout(log_sha1, 5000);
    console.log(sha1());
    
    function sha1() {
        return "This is an example";
    }
    
    function log_sha1() {
        console.log(sha1());
    }
    
    
    

答案 1 :(得分:0)

setTimeout(()=>{
sha1();
},5000);

请确保该函数在回调中.setTimeout总是附加回调,以确保它正常工作。我希望它可以帮助你。

答案 2 :(得分:0)

您的代码很好,只是两个console.log(sha1());语句立即执行它。作为sha1之后的括号使其执行 您可以删除这两个console.log(sha1());语句,也可以将其更改为console.log(sha1);