首页 > 解决方案 > setTimeout 函数未在量角器中使用 javascript 执行

问题描述

我创建了一个函数,我需要在延迟 2 分钟后读取文件。

function checkInLogs(logFilPath, logMessage){

    setTimeout(() => {

        fs.readFile(logFilPath, 'utf8', function (err,data){
            console.log('I am inside the checkInLogs function')
         })

    }, 120000);

    console.log('outside the function');
}

我正在使用以下代码调用该函数:

fileUtil.checkInLogs('D:/Installation/V114_new/be/5.6/rms/bin/logs/CCARms25', '[Port:8090] successfully started');

但问题是 setTimeOut 中的代码永远不会被执行。在控制台上,我可以看到消息为 :outside the function。但是里面的代码没有被执行。我什至尝试了以下功能:


function checkInLogs(logFilPath, logMessage){

    fs.exists(logFilPath, function(exists) {
        fs.readFile(logFilPath, 'utf8', function (err,data){
            console.log(data.toString());
            console.log(err.toString());
         })

    })



}

并称它为:

setTimeout(function() {
            fileUtil.checkInLogs('D:/Installation/V114_new/be/5.6/rms/bin/logs/CCARms21', '[Port:8090] successfully started')
        }, 120000);

但没有运气。setTimeOut 内的代码没有被执行。请提供任何建议/解决方案。

标签: javascriptprotractor

解决方案


通过测试,我认为您需要告诉它先等待,而不是使用 setTimeout。假设您的 protractor.conf 中的超时时间足够长,这应该可以工作。

it('can wait two min', async ()=>{
  await browser.sleep(120000);

  fileUtil.checkInLogs('D:/Installation/V114_new/be/5.6/rms/bin/logs/CCARms21', '[Port:8090] successfully started');
})

推荐阅读