loo*_*nes 5 javascript promise angularjs angular-promise
我需要进行api调用,以返回ID和与其关联的值的响应。然后,promise解析并返回true或false(如果找到或未找到查询的id)。
我怎样才能做到这一点?使用诺言的新手。正如诺言似乎令人困惑
这是使用API的终点,UserService返回ID和薪水的数组。我需要检查ID是否存在以及薪水是否与查询匹配,然后Promise需要解析为true或false。
这是身份证和收入的对象
[{
"id": 1,
"name": "Primary",
"sal": [{
"id": "1",
"sal": "10"
}, {
"id": "2",
"sal": "20"
}]
},{
"id": 2,
"name": "Secondary",
"sal": [{
"id": "1",
"sal": "100"
}, {
"id": "2",
"sal": "200"
}
]
}];
UserService.hasUserValue(id, income).then(function(qualifiesforlowIncome){
var isLowIncome = qualifiesforlowIncome
}
Run Code Online (Sandbox Code Playgroud)
qualifyforlowIncome是返回true或false的布尔值。我正在使用角度,因此在这种情况下我应该执行$ q.defer并返回defer.promise吗?
对此还不太清楚
当然,您需要做的就是添加一个then案例,确定是否有任何对象与查询匹配,然后返回true或false从中返回。该值将被带入下一个then案例。
在此示例中,我使用该some方法来查看数组中的任何对象是否符合条件。
Promise.resolve([
{
id: 1
},
{
id: 2
},
{
id: 3
}
])
.then(results =>
results.some(r => r.id === 2)
)
.then(foundResult => console.log(foundResult));Run Code Online (Sandbox Code Playgroud)
或者用 ES5 重写:
Promise.resolve([
{
id: 1
},
{
id: 2
},
{
id: 3
}
])
.then(function(results) {
return results.some(r => r.id === 2);
})
.then(function(foundResult) {
console.log(foundResult);
});Run Code Online (Sandbox Code Playgroud)
即使您返回一个稍后解析的 Promise,其工作原理也完全相同。
Promise.resolve([
{
id: 1
},
{
id: 2
},
{
id: 3
}
])
.then(results =>
// Return a promise, delay sending back the result
new Promise((resolve, reject) => {
setTimeout(() =>
resolve(results.some(r => r.id === 2)),
500
);
})
)
.then(foundResult => console.log(foundResult));Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12200 次 |
| 最近记录: |