作出承诺等待另一个承诺

HMS

在 node.js 应用程序中,我试图从 API 中查找产品列表,然后仅获取第一项的缩略图。

在我的代码中 getOrderDetails 是一个承诺,然后如果它是第一个产品,它会调用函数 getImage 这也是一个承诺。

但是,当我运行代码时,会在没有缩略图的情况下填充 orderDetails - 所以看起来代码没有等待 getImage 函数解析。

请有人解释我做错了什么吗?

先感谢您!

if (siteConfig.storeIntegration == 'Cart') {

    getOrderDetails(restPathOrder)
    .then(function(res) {

        var orderDetails = '';

        for (i = 0; i < res.items.length; i++) {

            productId = res.items[i]['productId'];

            thumbnail = '';

            if (i == 0) {

                getImage(productId, restApiKey)
                .then(function(res) {

                    thumbnail = res;

                    console.log('thumbnail:' + res);
                })
            }

            orderDetails = orderDetails + res.items[i]['quantity'] + ',' + res.items[i]['name'] + ',' + productUrl + ',' + thumbnail;

        }

        console.log(orderDetails);

    })


}

function getOrderDetails(restPath) {

    return new Promise((resolve, reject) => {

        request(restPath, function (error, response, body) {

            if (!error && response.statusCode == 200) {

                restData = JSON.parse(body);

                resolve(restData)
             }
        })
    })


}

function getImage(productId, restApiKey) {

    return new Promise((resolve, reject) => {

        var restPathProduct = storeURL + restApiKey + productId;

        request(restPathProduct, function (error, response, body) {

            if (!error && response.statusCode == 200) {

                restData = JSON.parse(body);

                thumbnail = restData.image[0];

                resolve(thumbnail);
             }
        })
    })

}
再见 StackExchange

我可以建议使用新await语法吗?

async main() {
    if (siteConfig.storeIntegration == 'Cart') {
        let res = await getOrderDetails(restPathOrder);

        var orderDetails = '';

        for (i = 0; i < res.items.length; i++) {

            productId = res.items[i]['productId'];

            let thumbnail = '';

            if (i == 0) {
                thumbnail = await getImage(productId, restApiKey);
            }

            orderDetails += res.items[i]['quantity'] + ',' + res.items[i]['name'] + ',' + productUrl + ',' + thumbnail;
        }
        console.log(orderDetails);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

包括另一个异步等待承诺的承诺-如何解决?

来自分类Dev

在包裹在另一个承诺中的流中等待承诺

来自分类Dev

从承诺中返回另一个承诺

来自分类Dev

用另一个新的承诺拒绝承诺

来自分类Dev

如何正确地使交易等待另一个承诺履行打字稿

来自分类Dev

如何使用 javascript 承诺使一个函数等待另一个函数异步完成运行?

来自分类Dev

解决另一个承诺-轮换执行顺序?

来自分类Dev

将承诺链接到另一个

来自分类Dev

解决另一个函数的承诺

来自分类Dev

对另一个类中的事件进行承诺

来自分类Dev

如何解决另一个函数的承诺

来自分类Dev

做出承诺取决于Angular中的另一个承诺

来自分类Dev

在承诺中循环直到另一个承诺结束

来自分类Dev

在另一个承诺中从承诺中返回价值

来自分类Dev

如何在返回新承诺的函数中使用另一个承诺?

来自分类Dev

服务承诺为组件上的另一个承诺返回处理过的数据

来自分类Dev

将返回 foo 的承诺映射到另一个返回 bar 的承诺?

来自分类Dev

如果您用另一个承诺解决一个承诺,应该怎么办?

来自分类Dev

AngularJS:返回一个承诺,它是由另一个按角度承诺的结果构造而成的?

来自分类Dev

我如何将一个承诺resolve()转移到另一个承诺

来自分类Dev

承诺多个 .then 当一个然后指望另一个

来自分类Dev

以承诺方式模拟服务,以便在另一个服务中进行测试

来自分类Dev

承诺`then`,该函数不返回任何值,而函数返回另一个诺言

来自分类Dev

承诺后如何使用react-router重定向到另一个URL?

来自分类Dev

angularjs在$ q.all中返回另一个承诺

来自分类Dev

Angular 2 CanActivate 作为承诺,从另一个组件解析

来自分类Dev

如何从另一个函数内的承诺返回值?

来自分类Dev

JS Promise - 返回结果不是另一个承诺

来自分类Dev

当一个承诺依赖于另一个时,Bluebird的Promise.all()方法

Related 相关文章

  1. 1

    包括另一个异步等待承诺的承诺-如何解决?

  2. 2

    在包裹在另一个承诺中的流中等待承诺

  3. 3

    从承诺中返回另一个承诺

  4. 4

    用另一个新的承诺拒绝承诺

  5. 5

    如何正确地使交易等待另一个承诺履行打字稿

  6. 6

    如何使用 javascript 承诺使一个函数等待另一个函数异步完成运行?

  7. 7

    解决另一个承诺-轮换执行顺序?

  8. 8

    将承诺链接到另一个

  9. 9

    解决另一个函数的承诺

  10. 10

    对另一个类中的事件进行承诺

  11. 11

    如何解决另一个函数的承诺

  12. 12

    做出承诺取决于Angular中的另一个承诺

  13. 13

    在承诺中循环直到另一个承诺结束

  14. 14

    在另一个承诺中从承诺中返回价值

  15. 15

    如何在返回新承诺的函数中使用另一个承诺?

  16. 16

    服务承诺为组件上的另一个承诺返回处理过的数据

  17. 17

    将返回 foo 的承诺映射到另一个返回 bar 的承诺?

  18. 18

    如果您用另一个承诺解决一个承诺,应该怎么办?

  19. 19

    AngularJS:返回一个承诺,它是由另一个按角度承诺的结果构造而成的?

  20. 20

    我如何将一个承诺resolve()转移到另一个承诺

  21. 21

    承诺多个 .then 当一个然后指望另一个

  22. 22

    以承诺方式模拟服务,以便在另一个服务中进行测试

  23. 23

    承诺`then`,该函数不返回任何值,而函数返回另一个诺言

  24. 24

    承诺后如何使用react-router重定向到另一个URL?

  25. 25

    angularjs在$ q.all中返回另一个承诺

  26. 26

    Angular 2 CanActivate 作为承诺,从另一个组件解析

  27. 27

    如何从另一个函数内的承诺返回值?

  28. 28

    JS Promise - 返回结果不是另一个承诺

  29. 29

    当一个承诺依赖于另一个时,Bluebird的Promise.all()方法

热门标签

归档