[英]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.