我的代码看起来像这样,
export function handleLogin(window,userData){
return (dispatch) => {
Meteor.call('checkUserLogin',userData,
(error,result)=>{
if(result.isLogin && !error) {
Meteor.call('SOMECALL',SOMEDATA (e,r)=>{
if(!e) {
async function getData(){ return await getAdminUgData();}
getData()
.then((d)=>{console.log('resolve!!');})
.catch((e)=>{console.log('!!reject'); });
}
});
});
}; }
getAdminUgData是,
export function getAdminUgData(){
return new Promise((resolve, reject) => {
Meteor.call('adminGetUserGroupData', (e,r)=>{
if(e) reject(new Error('error'));
else resolve(r);
});
});}
我应该打印'解决'只因为决心(r);确认在getAdminUgData中被调用。但令人困惑/奇怪的现实是“解决!!”打印出来之后,还会打印'!! reject'。我对此完全没有任何想法。欢迎任何建议;感谢。
答案 0 :(得分:2)
不,it's absolutely impossible for the same promise to both reject and fulfill - 所以永远不会发生同时调用.then(…, …)
的回调。但是totally possible that both a .then(…)
and a .catch(…)
callback are called when chained - 请注意,在您的示例中似乎并非如此,似乎还有其他事情发生。