下面是我的代码,我收到此错误Unhandled Rejection (TypeError): startPolling.bind(...).then is not a function

 setInterval(startPolling.bind(null, id).then(function(response){
       if (response.id == 0){
         console.log("stop polling")
       }
     }), 2000)


 function startPolling(id){
  return callApi('/someUrl/'+id+'','get') // it returns a promise
 }


问题:
 如果在调用bind时未使用startPolling,则setInterval不会每2秒执行一次代码。

如果我在调用bind时使用startPolling setInterval正在执行它的方式,但是then()未执行,因为我遇到了上述错误

最佳答案

startPolling.bind返回一个新函数,该函数在被调用时将调用startPolling,这又将返回一个promise。如果需要的话,必须是startPolling.bind(null, id)().then…这显然是胡说八道。

您不能在这里bind。您以后不能调用函数,而是立即在其返回值上访问属性。使用回调包装器:

setInterval(function () {
    startPolling(id).then(...)
}, 2000);

10-07 15:46