gpt4 book ai didi

Angularjs 的 promise

转载 作者:太空宇宙 更新时间:2023-11-04 01:53:30 26 4
gpt4 key购买 nike

大家好,我使用 angularjs 1.3.0 john papa 风格,我有两个 promise ...如果第一个 promise 返回 true,我如何执行第二个 promise ,任何人都可以帮忙吗?这是我的代码:

function signup() {
var promises = [updateProfile(vm.user), checkCaptcha( vm.captchaData)];
return dataservice.ready(promises).then(function () {
// there call promise in dataservice
})

}

如果 checkCaptcha == true ,我需要调用 updateProfile ..

我是这样制作的:

function signup() {
$q.when(dataservice.checkCaptcha(vm.captchaData))
.then(test)

function test(result){
console.log(result);
if(result){
var promises = [updateProfile(vm.user)];
return dataservice.ready(promises).then(function () {
// there call only updateProfile (put request)
})
}
}


}

是不好还是我的方式正确?致以诚挚的问候。

最佳答案

假设我们有这两个函数:

function doFirst() {return $q.when({isAuth:true})};
function checkAuth(user) {
if (!user.isAuth) {
return $http.get('auth/user/111');
}
return user;
}

然后我们就可以做这个链了。doFirst().then(checkAuth).then(workWithUser);

有两点很重要。

  • 您的检查函数应始终返回值。 (在另一种情况下,你将变得未定义)。请随意返回 promise 或普通值。
  • 您应该记住 workWithUser函数应始终采用一种类型的对象 - 经过身份验证的用户。这使您的代码更具可预测性。

顺便说一句,我有用于此类函数组合的 npm 包 https://www.npmjs.com/package/@drag13/when-do也许它会有用。

关于Angularjs 的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48802331/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com