Wie Schreibe ich eine Folge von Versprechungen in Python?

Ist es möglich, zu schreiben, eine Folge von Versprechen (oder Aufgaben) mit nur Python 3.6.1 Standard-Bibliothek?

Beispielsweise eine Sequenz von zusagen in JavaScript geschrieben werden als:

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();

Jede Funktion gibt auch ein Versprechen mit asynchronen Verarbeitung zur Folge, dass würde aufgelöst werden/abgelehnt werden, indem die unmittelbar folgenden Versprechen.

Ich bin mir bewusst, Bibliotheken wie verspricht-2.01 b und asyncio 3.4.3 und ich bin auf der Suche nach einem Python-STL-Lösung. Also, wenn ich für den import nicht-STL-Bibliothek, die ich lieber mit RxPython statt.

InformationsquelleAutor JP Ventura | 2017-04-10
Schreibe einen Kommentar