gpt4 book ai didi

node.js - 将 promise 的结果链接并传递给进一步的 promise

转载 作者:太空宇宙 更新时间:2023-11-03 23:02:15 25 4
gpt4 key购买 nike

我正在链接一些返回 promise 的请求。第一个是在某个站点上进行登录检查,并返回一些凭据。然后我进行 admin.auth().createUser() 调用。在我知道此 createUser 调用成功并且登录检查成功后,我想使用从两个 Promise 返回的这两个对象发出第三个请求,以将信息存储在 firebase 实时数据库中。我只是不知道如何将这两个结果传递给最终的 promise 。这是一些代码。

login(siteUser, sitePass)
.then(credentials => {
return admin.auth().createUser({
'email': email,
'emailVerified': false,
'password': password,
'displayName': username
})
})
.then(userData => {
return writeUserData(userData, credentials); // I need to pass credentials here but I don't know how.
})
.then(() => res.status(200).send('success'))
.catch(err => res.status(500).send(err));

我需要在 createUser() 解析后将第一个 promise 的结果传递给 writeUserData。

最佳答案

这在功能上与您的代码相同,只是它将凭据传递到writeUserData所需的位置。您不是完全平坦的 promise 链,而是将 .then 添加到 createUser 响应以返回 credentials,而不是来自 createUser

unused(在您的代码中)响应
login(siteUser, sitePass)
.then(credentials =>
admin.auth().createUser({
email,
emailVerified:false,
password,
displayName: username
})
.then(userData => credentials)
)
.then(credentials => writeUserData(userRecord, credentials))
.then(() => res.status(200).send('success'))
.catch(err => res.status(500).send(err));

但是,如果您在代码中犯了错误并且

.then(userData => {
return writeUserData(userRecord, credentials); // I need to pass credentials here but I don't know how.
})

应该是

.then(userData => {
return writeUserData(userData, credentials); // I need to pass credentials here but I don't know how.
})

(即 userRecord 应该是 userData) - 那么您不会忽略 createUser 的响应 - 这根本不会使代码变得更加复杂

login(siteUser, sitePass)
.then(credentials =>
admin.auth().createUser({
email,
emailVerified:false,
password,
displayName: username
})
.then(userData => ({userData, credentials}))
)
.then(({userData, credentials}) => writeUserData(userData, credentials))
.then(() => res.status(200).send('success'))
.catch(err => res.status(500).send(err));

关于node.js - 将 promise 的结果链接并传递给进一步的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44743638/

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