gpt4 book ai didi

javascript - 如何解决 $q 的 promise ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:58:04 26 4
gpt4 key购买 nike

我正在使用 AngularJS 和 $q 作为 promise,我对用法感到困惑,我该如何修复这个 promise?

我想在调用 isLoggedInPromise() 或“AUTH_REQUIRED”时返回用户。

谢谢!

    function isLoggedInPromise() {
$q.when(userWithAllData()).then(function(user) {
return user;
});
$q.when(userWithAllData()).reject(function() {
return "AUTH_REQUIRED";
});
}

function userWithAllData(){
var deferral = $q.defer();

var query = new Parse.Query(Parse.User);
query.include(["info", "info.rank", "privateInfo"]);
query.get(Parse.User.current().id).then(function (loadedUser){
deferral.resolve( loadedUser );
});

return deferral.promise;
}

最佳答案

您要做的是在函数具有实际返回所需的所有数据时调用 promise 上的 resolve 函数

在返回 promise 的函数中,将“resolve”视为实际的返回语句。

因此您的 isLoggedInPromise 函数也需要返回一个 promise ,这会使其变得多余。到那时,任何需要用户的东西都必须等待。

isLoggedInPromise().then(function(result){...etc...}, function(reason){//auth needed})

如果您仍然需要 isLoggedin 函数,那么它应该看起来像

 function isLoggedInPromise() {
var isLoggedIn = userWithAllData().then(
function(user) {
return user;
},
function(reason){
return $q.reject("AUTH_REQUIRED")
});
}

当然,您还必须在 userWithAllData 函数中包含一些拒绝逻辑。

关于javascript - 如何解决 $q 的 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34798307/

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