0

製品コンポーネントと製品所有者コンポーネントがあります。各製品には所有者がいます

私がやろうとしていること

API エンドポイントを呼び出して、製品のリストを取得しています。プロミスが解決されると、製品のリストができます。各製品には OwnerID があります。別の API エンドポイントを呼び出して所有者の名前を取得し、それを反復中の現在の製品に割り当てようとしています。

これまでのマイコード

<script>
    var config = require('../config');
    export default {
        data () {
            return {
                products:  [],
            }
        },
        ready () {
            this.getProducts().then(t => {
                console.log(t);
            });
        },
        methods :  {
            getProducts : function() {
                let url = config.API.GetProduct

                this.$http.get(url).then(response=> {
                    this.products = response.data.resource;
                    var p = this.products.map(this.getOwner);
                    return Promise.all(p);

                }, error=> {
                    console.error("An error happened!")
                });
            },
            getOwner : function(product) {
                let url = config.API.GetProductOwnerName.replace('[$$$]', product.OwnerID);
                var p = new Promise();

                this.$http.get(url).then(response => {
                    product.OwnerID = response.data.resource[0].OwnerName;
                    p.resolve(currentObj);
                });

                return p;

            }
        }
        components: {}
    }
</script>

私が直面しているエラー

今、私がそれをしようとしているときはいつでも、次のエラーが発生し続けます

Uncaught TypeError: Cannot read property 'then' of undefined
Uncaught (in promise) TypeError: Promise resolver undefined is not a function(…)

誰かが私がここで間違っていることを教えてもらえますか?

ありがとう

4

1 に答える 1

0

新しい promise オブジェクトを再作成する必要はありません。次の呼び出しに渡したいオブジェクトを返すだけです。

getProducts: function() {
    let url = config.API.GetProduct

    return this.$http.get(url).then(response => {
        this.products = response.data.resource;
        return this.products.map(this.getOwner);
    }, error=> {
        console.error("An error happened!")
    });
},
于 2016-09-30T19:13:31.737 に答える