首页 > 解决方案 > NodeJS等待解决的承诺

问题描述

一段时间以来,我一直无法正常使用 Promises。我在 Promise 中使用了另一个。预期结果:1、2、3、4 实际结果:1、2、4、3

api.get("orders/2049103")
    .then(({data}) => {
        userPayload.number = data.number;
        userPayload.first_name = data.billing.first_name;
        userPayload.last_name = data.billing.last_name;
        userPayload.email = data.billing.email;

        console.log(1);

        return data;
    })
    .then((data) => {
        console.log(2);
        let productInfo = {};
        productInfo.id = data.line_items[0].product_id;
        productInfo.name = data.line_items[0].name;

        api.get(`products/${productInfo.id}`)
            .then(({data}) => {
                productInfo.downloads = data.downloads;
                console.log(3);
            })
        return productInfo
    })
    .then(() => {
        console.log(4);
    })

标签: node.jsasynchronouspromisees6-promise

解决方案


Problem solved, thanks @bergi!

api.get("orders/2049103")
    .then(({data}) => {
        userPayload.number = data.number;
        userPayload.first_name = data.billing.first_name;
        userPayload.last_name = data.billing.last_name;
        userPayload.email = data.billing.email;
        userPayload.downloads = [];

        console.log(1);

        return data;
    })
    .then((data) => {
        console.log(2);
        let productInfo = {};
        productInfo.id = data.line_items[0].product_id;
        productInfo.name = data.line_items[0].name;

        return api.get(`products/${productInfo.id}`)
            .then(({data}) => {
                productInfo.downloads = data.downloads;
                userPayload.downloads.push(productInfo);
            })
    })
    .then(() => {
        console.log(userPayload);
    })

推荐阅读