是否可以 仅 使用 Python 3.6.1 标准库 编写一系列 承诺(或任务)?
例如,JavaScript 中的一个序列 promise 写成:
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 ,该结果将被紧随其后的 Promise 解决/拒绝。
我知道诸如 promises-2.01b
和 asyncio 3.4.3
之类的库,我正在寻找 Python STL 解决方案。因此,如果我需要导入一个非 STL 库,我更喜欢使用 RxPython 。
原文由 JP Ventura 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是一个使用 asyncio 和
async/await
语法的类似程序:编辑:如果您对反应流感兴趣,您可以考虑使用 aiostream 。
这是一个简单的例子:
文档 中的更多示例。
免责声明:我是项目维护者。