Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
212 views
in Technique[技术] by (71.8m points)

JavaScript, Promise rejection

I'm trying to create this promise:

const getTocStatus = new Promise((resolve, reject) => {
  const userInfo = Auth.currentUserInfo();
  resolve(userInfo.attributes['custom:tocStatus']);
  reject(new Error('Couldn't connect to Cognito'));
});

Then use it like this:

getTocStatus.then((response) => {
  if (response === 'pending) { //do sth }
}, error => console.log('Error:', error)

But I'm getting the Error:

[TypeError: undefined is not an object (evaluating 'userInfo.attributes['custom:tocStatus']')]

What is badly coded on the promise and it call?

question from:https://stackoverflow.com/questions/65878338/javascript-promise-rejection

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Lionel's answer is correct (I didn't know what Auth.currentUserInfo was, but there's no need for the Promise constructor since you're already dealing with promises:

const getTocStatus = async () => {
  try {
    const userInfo = await Auth.currentUserInfo()
    return userInfo.attributes['custom:tocStatus']
  } catch (e) {
    new Error("Couldn't connect to Cognito")
  }
}

// or with .then syntax
const getTocStatus = () =>
  Auth.currentUserInfo()
    .then((userInfo) => userInfo.attributes['custom:tocStatus'])
    .catch((e) => { Promise.reject(new Error("Couldn't connect to Cognito")) })

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...