nodejs中promise中的resolve有什么用
What is the use of resolve in promise in nodejs
function getAuthSecrets() {
return new Promise((resolve, reject) => {
let authSecrets = NamespaceManager.getNamespace('******).get('authSecrets');
if (!authSecrets) {
sm.getSecret(authConfig.secretName).then((secret) => {
NamespaceManager.getNamespace('cls2_context').set('authSecrets', secret);
resolve(secret);
}).catch((error) => {
reject(error);
});
} else {
resolve(authSecrets);
}
});
}
在这里它被称为:
if (username && password) {
getAuthSecrets().then(secrets => {
调用 getAuthSecret 会返回什么?
authSecrets
或 secret
,具体取决于对 resolve
的调用。
您想 return resolve(...)
避免编写尝试解析两次的代码。
你抓住然后立即拒绝是一个迹象,表明你的机器比它需要的更复杂。您可以使用 Promise.resolve
:
将值提升到 Promise 上下文
function getAuthSecrets() {
const authSecrets = NamespaceManager.getNamespace('******).get('authSecrets');
return authSecrets ? Promise.resolve(authSecrets) :
sm.getSecret(authConfig.secretName).then((secret) => {
NamespaceManager.getNamespace('cls2_context').set('authSecrets', secret);
return Promise.resolve(secret);
})
});
}
function getAuthSecrets() {
return new Promise((resolve, reject) => {
let authSecrets = NamespaceManager.getNamespace('******).get('authSecrets');
if (!authSecrets) {
sm.getSecret(authConfig.secretName).then((secret) => {
NamespaceManager.getNamespace('cls2_context').set('authSecrets', secret);
resolve(secret);
}).catch((error) => {
reject(error);
});
} else {
resolve(authSecrets);
}
});
}
在这里它被称为:
if (username && password) {
getAuthSecrets().then(secrets => {
调用 getAuthSecret 会返回什么?
authSecrets
或 secret
,具体取决于对 resolve
的调用。
您想 return resolve(...)
避免编写尝试解析两次的代码。
你抓住然后立即拒绝是一个迹象,表明你的机器比它需要的更复杂。您可以使用 Promise.resolve
:
function getAuthSecrets() {
const authSecrets = NamespaceManager.getNamespace('******).get('authSecrets');
return authSecrets ? Promise.resolve(authSecrets) :
sm.getSecret(authConfig.secretName).then((secret) => {
NamespaceManager.getNamespace('cls2_context').set('authSecrets', secret);
return Promise.resolve(secret);
})
});
}