nodejs在promise中使用resolve的用途

问题描述 投票:0回答:1
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将返回什么?

node.js promise callback
1个回答
0
投票

[authSecretssecret,取决于要执行对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);
       })
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.