在一个承诺中调用的$ window.open打破了第二个承诺

时间:2015-05-20 12:52:21

标签: angularjs gruntjs window.open angular-promise livereload

我对angularjs很新。喜欢它,但有时会得到惊喜,我无法找到答案。

我有一个功能,允许用户通过单击链接为文件构建列表。这可能需要一分钟,因此用户可以同时构建不同的列表。意思是一旦构建了文件,就会出现一个弹出窗口来下载它。 当只构建一个文件时,所有这些都有效。半分钟后,下载弹出窗口出现。但是当第二个POST同时构建时,第二个POST被取消(它会在错误回调中到达)一旦弹出第一个POST。

如果我删除了$ window.open,两个POST都成功完成,我在控制台日志中同时获得了两个fileId。

显然问题在于$ window.open。但为什么?我做错了什么或如何解决这个问题?有人有想法吗?我已经搜索了几个小时但似乎无法在这个案例中找到任何东西。

 $scope.idPromise = $http.post(restPath, $scope.data)
              .then(function(data){
console.log(data.data);
console.log(data.data.fileId);
$window.open(restPath + 'files/' + data.data.fileId, '_self');
},function(error){
console.log('promise error')
            });

所以当我在代码中没有window.open的情况下构建两个列表时,我会在控制台中看到这样的内容:

  

POST http://localhost:8080/xxx-rest/rest/lijsten/vastelijsten/gezinshoofdenMetLeden 200 OK 1m

     

POST http://localhost:8080/xxx-rest/rest/lijsten/vastelijsten/gezinshoofdenMetLeden 200 OK 1m 40s

     

report3545743463669473959.xlsx

     

report4733168386603499105.xlsx

当window.open放在代码中时:

  

POST   http://localhost:8080/xxx-rest/rest/lijsten/vastelijsten/gezinshoofdenMetLeden   200 OK 1m

     

POST   http://localhost:8080/xxx-rest/rest/lijsten/vastelijsten/gezinshoofdenMetLeden   x 53,59s

     

report1588183186872251177.xlsx

     

承诺错误

正如您所看到的,一旦第一个POST收到响应,最后一个POST就会停止,因此对于第二个POST,没有得到任何响应。

更新

似乎问题在于grunt服务器和liveReload协议。我的大学一直告诉我要忽略这个错误,但现在很清楚,因为页面失去了连接,承诺失败了。

有没有人有使用grunt和liveReload的经验?我能解决这个问题吗?它可以在生产服务器上运行吗?

我得到的控制台错误:

  

de verbinding met ws:// localhost:35729 / livereload werd onderbroken   tijdens het laden van de pagina。 this.socket = new   this.WebSocket(this._uri);

(翻译:与...的连接被中断)

0 个答案:

没有答案