我对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);
(翻译:与...的连接被中断)