[Python] What is the Python equivalent of a Promise from JavaScript?

Discussão em 'Python' iniciado por Stack, Março 24, 2025.

  1. Stack

    Stack Membro Participativo

    I am trying to understand what would be the best code structure or a design pattern that would do the following:

    Have a function named get_data that would start up a socket connection and will start waiting for a specific socket event that would return some data. Once it gets the data, only then the get_data function should be returned.

    So in JS it would be very simple like this:

    (Keep in mind that this code snippet is an example, it's not meant to be a working code)

    const getData = () => {
    return new Promise((resolve, reject) => {
    const socket = socket()
    socket.on("message", (data)=>{
    resolve(data)
    })
    socket.connect("localhost")
    });
    }

    const parseData = async () => {
    const data = await getData()
    // do something with the data
    }


    With Python however, I have absolutely no idea how to achieve the same result.

    How would I translate it to Python? What strategy would be used here?

    The only way I could think of right now is like this:

    def get_data():
    socket = socket()
    my_data = None

    @socket.event
    def message(data):
    nonlocal my_data
    my_data = data

    socket.connect("localhost")

    while not my_data:
    time.sleep(0.3)

    socket.disconnect()
    return my_data

    def parse_data():
    data = get_data()
    # do something with the data

    Continue reading...

Compartilhe esta Página