2017-11-11 93 views
0

我想一个模块(节点8.9.0LTS)内的以下内容:的Node.js的setTimeout方面的问题

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) 

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

+2

'setInterval'的意图是在这里?看起来你每两秒运行一次请求五次,然后停止它。 – JLRishe

回答

3

您不能在非异步函数中使用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); 
0

您是否尝试过在这里使用单引号?

let url = '/api?searchRequestId=1111'

你不会需要回剔反正如果你没有任何串联变量的字符串。