在promise库Q中,您可以执行以下操作来按顺序链接promise:
var items = ['one', 'two', 'three'];
var chain = Q();
items.forEach(function (el) {
chain = chain.then(foo(el));
});
return chain;
Run Code Online (Sandbox Code Playgroud)
但是,以下内容不适用于$ q:
var items = ['one', 'two', 'three'];
var chain = $q();
items.forEach(function (el) {
chain = chain.then(foo(el));
});
return chain;
Run Code Online (Sandbox Code Playgroud) 所以我试图在 Angular 中从数组中执行 POST 请求。基本上,当用户选择列表中的多个项目时,他们可以“解锁”每个项目。所以我遇到的问题是如何使用 forEach 进行 POST。我能够使用 forLoop 执行 POST,但问题是当它执行一个 POST 时,它不会执行另一个。有人可以指出我做错了什么,或者是否有更好的解决方案来解决这个问题?
以下是我查看的其他堆栈问题以找到可能的解决方案:
组件.ts
locked: Array<any> = [];
// Unlock
unlock() {
let observer = {
next(data) {
data => console.log(data)
},
error(error) {
return new Error('Post Error');
},
complete() {
console.log("Completed");
// window.location.reload();
}
}
// On unlock send lock data to Service for POST
this.http.postUnlock(this.unlocked).subscribe(observer);
}
Run Code Online (Sandbox Code Playgroud)
服务.ts
// POST to UNLOCK RESOURCES
postUnlock(locked) {
let headers = new …Run Code Online (Sandbox Code Playgroud) angular ×1
angularjs ×1
chaining ×1
foreach ×1
http-post ×1
javascript ×1
q ×1
rxjs ×1
sequential ×1