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