Каково преимущество абстракции 'обещания' в CommonJS?

Я читаю эту статью, и раздел по абстракции обещания кажется немногим чрезмерно сложным мне. Следующее дано как пример:

requestSomeData("http://example.com/foo") // returns a promise for the response
    .then(function(response){ // ‘then’ is used to provide a promise handler
        return JSON.parse(response.body); // parse the body
    }) // returns a promise for the parsed body
    .then(function(data){
        return data.price; // get the price
    }) // returns a promise for the price
    .then(function(price){ // print out the price when it is fulfilled
        print("The price is " + price);
    });

Мне кажется, что следующее могло предоставить тому же результату меньше строк кода:

requestSomeData("http://example.com/foo")
    .requestHandler(function(response){
        // parse the body
        var data  = JSON.parse(response.body);

        // get the price
        var price = data.price;

        // print out the price
        print("The price is " + price);
    });

13
задан Darrell Brogdon 29 January 2010 в 05:36
поделиться

1 ответ

Пока правда, что оба в конечном итоге будут выполнять то же самое, разница состоит в том, что ваш второй пример не асинхронно. Например, подумайте о том, что произойдет, если json.parse (...) оказывается чрезвычайно дорогой операцией; Вам придется повесить до тех пор, пока все не закончится, что не всегда может быть то, что вы хотите.

Это то, что обещания получают вас: мощная способность отложить вычисление правильного ответа до более удобного времени. Как следует из названия, построение «обещания» дать вам результат в какой-то момент, просто не обязательно прямо сейчас. Вы можете прочитать больше о фьючерсных и обещаниях работать в большем масштабе здесь .

17
ответ дан 1 December 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: