我不确定我在这里做错了什么 -
function clearBefore(val) {
if (val.isEnrolled && val.name === 'XYZ') {
vm.clear(val, 'Hello').then(function(value){
return value;
});
return true;
}
}
然后调用它 -
clearBefore(val).then(function (returnVal) {});
我是承诺的新手,请让我知道如何更新函数以返回承诺。
答案 0 :(得分:1)
在“if”中你返回“true”并且在“if”之外你什么也没有返回,所以你不能使用clearBefore()的返回作为一个承诺。
也许这就是你想要的:
function clearBefore(val) {
if (val.isEnrolled && val.name === 'XYZ') {
return $q.resolve(vm.clear(val, 'Hello'));
}
return $q.reject();
}
clearBefore(val).then(
function(val) {
console.log('ok', val);
},
function() {
console.log('not ok...');
}
);
现在函数的每个返回点都返回一个promise。我们在“if”中有一个$q.resolve()
,在{outside}外面有$q.reject()
来返回失败的承诺。
答案 1 :(得分:0)
你需要回复你的承诺
function clearBefore(val){ if (val.isEnrolled && val.name === 'XYZ') { return vm.clear(val, 'Hello').then(function(value) { return value; }); return true; } }
类似这样的事情
答案 2 :(得分:0)
您似乎在clearBefore()函数结束时没有返回任何内容,因此请尝试这样做:
function clearBefore(val) {
if (val.isEnrolled && val.name === 'XYZ') {
vm.clear(val, 'Hello').then(function(value){
return value;
});
}
return val; // here you should return what you need
}
之后:
clearBefore(val).then(function (returnVal) {});
答案 3 :(得分:0)
为了解决这个问题,我做了类似的事情(介绍了函数的承诺)
function clearOTPBefore(page) {
return $q(function (resolve, reject) {
if (val.isEnrolled && val.name === 'XYZ') {
return vm.clear(val, 'Hello').then(function(value){
return resolve(value);
});
} else {
resolve(true);
}
})
}