Можно ли написать последовательность promise (или задач), используя только Стандартная библиотека Python 3.6.1
Например, последовательность promises в JavaScript написана как:
const SLEEP_INTERVAL_IN_MILLISECONDS = 200;
const alpha = function alpha (number) {
return new Promise(function (resolve, reject) {
const fulfill = function() {
return resolve(number + 1);
};
return setTimeout(fulfill, SLEEP_INTERVAL_IN_MILLISECONDS);
});
};
const bravo = function bravo (number) {
return new Promise(function (resolve, reject) {
const fulfill = function() {
return resolve(Math.ceil(1000*Math.random()) + number);
};
return setTimeout(fulfill, SLEEP_INTERVAL_IN_MILLISECONDS);
});
};
const charlie = function charlie (number) {
return new Promise(function (resolve, reject) {
return (number%2 == 0) ? reject(number) : resolve(number);
});
};
function run() {
return Promise.resolve(42)
.then(alpha)
.then(bravo)
.then(charlie)
.then((number) => {
console.log('success: ' + number)
})
.catch((error) => {
console.log('error: ' + error);
});
}
run();
Каждая функция также возвращает Promise с результатом асинхронной обработки, который будет разрешен/отклонен сразу же после обеда.
Мне известны библиотеки, такие как promises-2.01b
и asyncio 3.4.3
, и я ищу решение Python STL. Таким образом, если мне нужно импортировать библиотеку, отличную от STL, я предпочитаю вместо этого использовать RxPython.