繁体   English   中英

Node.js setTimeout上下文问题

[英]Node.js setTimeout context issue

我正在模块(节点8.9.0LTS)中尝试以下操作:

   const someResponse = await ajaxService.post('/data/search', params)
   const ms = 2000;

   const intervalID = setInterval(function(){
     if(Object.keys(personDataResponse).length === 0){
       let url = `/api?searchRequestId=1111`
       response = await ajaxService.get(url)
     }
   }, ms);

   setTimeout(function() {
      clearInterval(intervalID);
   }, ms * 5);

但是我收到以下信息:

/path/to/project/project/api/router.js:27
            response = await ajaxService.get(url)
                                       ^^^^^^^^^^^

SyntaxError: Unexpected identifier
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:599:28)
    at Object.Module._extensions..js (module.js:646:10)
    at Module.load (module.js:554:32)
    at tryModuleLoad (module.js:497:12)
    at Function.Module._load (module.js:489:3)
    at Module.require (module.js:579:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/path/to/project/project/app.js:16:8)

有什么建议么? 在setTimeout之外可以访问ajaxService.get()。

您不能在非异步函数中使用await 因此,最简单的解决方案是将函数更改为async

                               // v--- here
const intervalID = setInterval(async function () {
  if(Object.keys(personDataResponse).length === 0){
    let url = `/api?searchRequestId=1111`
    response = await ajaxService.get(url)
  }
}, ms);

您是否尝试过在此处使用单引号?

let url = '/api?searchRequestId=1111'

如果不将任何变量连接到字符串,则无论如何都不需要反勾。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM