Использование обещаний BlueBird, я пытаюсь сделать getCredentials
в обещание, которое будет работать как getCredentials.then(function() { do this and that });
. Не уверен, что я делаю неправильно, потому что, когда я разрешаю в writeToFile
, обещание не считается разрешенным/полным.bluebird рекурсивное обещание не получается разрешено/заполнено
function getPassword(user) {
return new Promise(function(resolve, reject) {
read({prompt: "Password: ", silent: true, replace: "*" }, function (er, pass) {
rest.postJson(URL, payload(user, pass))
.on('fail', httpFail)
.on('error', conError)
.on('success', writeToFile);
});
});
}
function getCredentials() {
return new Promise(function(resolve, reject) {
read({prompt: "Username: "}, function (er, user) {
getPassword(user);
});
});
}
function writeToFile(data, response) {
return new Promise(function(resolve, reject) {
tokenFile = 'gulp/util/token-file.json'
token = {
id: data.access.token.id,
expires: data.access.token.expires
}
token = JSON.stringify(token);
fs.writeFile(tokenFile, token, function(err) {
if (err) throw err;
console.log("Token was successfully retrieved and written to " .cyan +
tokenFile .cyan + "." .cyan);
resolve();
});
});
}
module.exports = getCredentials;
Почему вы всегда игнорируете 'er'rors? Используйте правильное [promisification] (https://github.com/petkaantonov/bluebird/blob/master/API.md#promisification) вместо конструктора 'Promise'. – Bergi
Что такое 'httpFail' и' conError'? – Bergi
Это функции обратного вызова. Я попытался использовать обещание, но не имел успеха ... Я думал, что, возможно, некоторые из функций не соответствовали стандартам узлов. – dman