JavaScript有点新鲜。 一直在处理承诺,但遇到了一个问题,我不知道如何处理。将一个承诺的值传递给下一个
我该如何将价值传递给下一个承诺的决心?
这里是我的代码
bot.on('ask.add_account_password', (msg) => {
let username = users[msg.from.id].username;
let password = msg.text;
var accounts = require('./inc/account.js');
accounts.login_account(username,password).then(function(data){
var account = data.params;
console.log(account);
return accounts.store(msg.from.id,username,password,account.followerCount);
}).then(function(data){
let caption = "Your account "+account.username+"("+account.fullName+")has been added\n";
return bot.sendPhoto(msg.from.id, account.picture, {caption:caption});
})
.catch(function(error){
console.log(error);
add_account(msg,error.name);
});
});
在那里我创建的标题变量的行,我试图之前(VAR帐户= data.params)访问块中创建的帐户对象,但我得到一个参考错误说它没有定义。现在,我可以通过将整个对象发送到accounts.store函数并在完成时解析对象来轻松绕过此操作,但对于更大的问题,这似乎是一个肮脏的解决方法。有没有更干净的方法来做到这一点?
是什么让你认为'store'返回'account'一个(用于许诺)之后,你可以只返回帐户? – Bergi
@Bergi _“是什么让你觉得商店返回(承诺)的帐户”_不确定你的意思?答案的要点是,如果OP需要访问前一个'.then()'中的值,则前面的'.then()'返回的值是后续的.then()'中的参数。 OP需要确保他们在后续的'.then()' – guest271314
返回正确的值,但是他们'返回accounts.store(...)'而不是'account',所以这不太容易。 – Bergi