簡體   English   中英

Javascript-承諾待定

[英]Javascript - Promise pending

我正在學習Promise的工作,我想從表中選擇數據並將其添加到數組中,然后將該數組發送到下一個。

我這樣做,但它返回[Promise {<pending>}]

    var p1 = new Promise(function(resolve, reject) {
      var stamp = req.params.stamp;
      var part = [];
      part.push(request.query("SELECT u_order, u_familia, u_part, u_type FROM u_part (nolock) where u_order <'92' and u_order <> '100'"));
      resolve(part);
      // or
      // reject ("Error!");
    });

    p1.then(function(value){
      console.log(value);
    }, function(reason){
      console.log(reason);
    }); 

我認為我必須等待承諾,但是如何?

UPDATE

現在,我想迭代數組部分並選擇另一個數組。 之后,我必須使用此結構創建一個新的數組:

-PARTS
      - part
            - u_order
            - u_familia
            - u_part
            - u_type
            - articles (article from each part)

我嘗試這樣做,但無法訪問數組文章

var p1 = new Promise(function(resolve, reject) {
      var stamp = req.params.stamp;
      request.query("SELECT u_order, u_familia, u_part, u_type FROM u_part (nolock) where u_order <'92' and u_order <> '100'").then((data)=>resolve(data));
      // or
      // reject ("Error!");
    });



    p1.then(function(value){
      var stamp = req.params.stamp;
      console.log(value.length);
      for(var i= 0; i<value.length; i++)
      {
        console.log(value[i]);
        request.query("SELECT st.u_posic, sc.ref, sc.qtt, sc.design FROM st INNER JOIN sc ON st.ref = sc.ref where sc.ststamp ='"+stamp+"' and st.u_posic = '"+value[i].u_order+"'").then((data)=>resolve(data));
      }

    }, function(reason){
      console.log(reason);
    });

    p1.then(function(part, articles){
      var parts = [];
      console.log("PART: " +part.length);
      for(var j= 0; j<part.length; j++)
      {
        console.log(part[j].u_order);
        console.log(part[j].u_familia);
        console.log(part[j].u_part);
        console.log(part[j].u_type);
        console.log(articles[j]);
      };
    });

謝謝

您可以執行以下操作:

var stamp = req.params.stamp;
var p1 = request.query("SELECT u_order, u_familia, u_part, u_type FROM u_part (nolock) where u_order <'92' and u_order <> '100'");

p1.then((value) => {
    console.log(value.length);
    var promise_arr = [];
    for(var i= 0; i<value.length; i++)
    {
        console.log(value[i]);
        promise_arr.push(request.query("SELECT st.u_posic, sc.ref, sc.qtt, sc.design FROM st INNER JOIN sc ON st.ref = sc.ref where sc.ststamp ='"+stamp+"' and st.u_posic = '"+value[i].u_order+"'"));
    }
    //Since request.query returns a promise we need to resolve all of the promises using Promise.all
    return Promise.all(promise_arr);
}, (reason) => {
    console.log(reason);
}).then((part) => { //This is where you receive result form Promise.all
    var parts = [];
    console.log("PART: " +part.length);
    for(var j= 0; j<part.length; j++)
    {
        console.log(part[j].u_order);
        console.log(part[j].u_familia);
        console.log(part[j].u_part);
        console.log(part[j].u_type);
        console.log(articles[j]);
    };
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM