【问题标题】:How do I set a time delay between 2 screenshot-desktop calls?如何设置 2 个屏幕截图桌面调用之间的时间延迟?
【发布时间】:2020-09-29 02:28:39
【问题描述】:

screenshot-desktop 是一个基于 Promise 的 npm API,它获取桌面屏幕截图并在调用时存储它。

但是,我需要三次调用该函数,并在每次调用之间设置 5 秒的延迟。 由于这是一个 Promise API,它们的执行会立即发生。我可以在通话之间造成延迟吗?

const screenshot = require('screenshot-desktop');
screenshot({filename:'a.jpg'});
//need delay of 5 secs here
screenshot({filename:'b.jpg'});
//another delay of 5 secs needed here
screenshot({filename:'c.jpg'});

显然,setTimeout 和 setInterval 函数不适用于这些基于 Promise 的 API。

【问题讨论】:

    标签: javascript node.js npm


    【解决方案1】:

    我建议你按以下方式使用 Promise:

    const screenshot = require('screenshot-desktop');
    const delay = (ms = 100) => new Promise(resolve => setTimeout(resolve, ms))
    
    async function init() {
        screenshot({filename:'a.jpg'});
        await delay(5000);
        screenshot({filename:'b.jpg'});
        await delay(5000);
        screenshot({filename:'c.jpg'});
    }
    
    init();
    

    使用异步函数,您可以使用await 停止处理,直到满足给定条件或事件。在这种情况下,“事件”是一个需要 5000 毫秒才能完成的计时器。

    如果异步函数抛出错误,您可以使用catch 方法或then 方法的第二个参数来捕获它,如下所示:

    init().then(function(result) {
        console.log("The async function finished sucessfully and returned the following:");
        console.log(result);
    }, function (err) {
        console.log("The async function failed with the following error:");
        console.log(err);
    });
    

    【讨论】:

      猜你喜欢
      • 2020-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多