cuốn sách gpt4 ai đã làm

Cách gọi async.each trong hàm bên ngoài với async.waterfall bên trong async.each

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 00:56:53 27 4
mua khóa gpt4 Nike

Tôi có một mô-đun xuất trong Node.JS

exports.doSomethingImportant= function(req, res) {
var id = req.params.id;
Demo.findOne({'_id': id})
.exec(function(err, demosReturned) {
async.waterfall([
hàm(outerCallBack){
console.log("Trong lần gọi lại đầu tiên");
firstOrderFunction(demosReturned,outerCallBack);
},
hàm(x,outerCallBack){
var y =3
var z = x*y;
console.log("Trong cuộc gọi lại lần thứ hai");
bên ngoàiCallBack(null,z);
}
],hàm(err,z){
if(err){
console.log("Lỗi là == " +err);
}khác{
console.log("Giá trị trả về là == "+z);
}
});
});//Kết thúc Demo.findOne
};

bây giờ của tôi chức năng đặt hàng đầu tiên Lại có một cái async.each Nhúng async.waterfall

hàm nắm tayOrderFunction(demosReturned,outerCallBack){
console.log("Được gọi là hàm ngoài");


async.each(demosReturned.locations, function(location, InnerCallBack) {
console.log('Vị trí tính toán #');

async.waterfall([
hàm(internalCallBack){
console.log("Tính toán thác nước bên trong đầu tiên");
a = 14;
nội bộCallBack(null,a);
},
hàm(a,internalCallBack){
console.log("Tính toán thác nước thứ hai bên trong");
b =14;
c = a*b;
nội bộBack(null,c)
}
],hàm(err,c){
if(err){
console.log("Lỗi là == " +err);
}khác{
d = c;
console.log("Giá trị trả về là == "+c);
bên trongCallBack(null,d);
}
});//Kết thúc Async.Waterfall
},hàm(err,d){
if(err){nhập mã vào đây
console.log("Lỗi trong Async.Each === " + err);
}khác{
console.log("Giá trị trả về đã được xử lý");
bên ngoàiCallBack(null, d);
}
}); //Kết thúc không đồng bộ.Each
}

Đầu ra tôi nhận được là

Trong cuộc gọi lại đầu tiên

Gọi là hàm ngoài

Vị trí tính toán #

Vị trí tính toán #

Máy tính thác nước bên trong đầu tiên

Máy tính thác nước bên trong đầu tiên

Giá trị trả về được xử lý

Trong cuộc gọi lại thứ hai

Giá trị trả về là == NaN

Tôi muốn mọi thứ chạy đồng bộ theo thứ tự sau.

  1. Gọi async.waterfall trong exec gọi lại Demo.findone

  2. Gọi FirstOrderFunction

  3. Gọi async.each bên trong firstOrderFunction

  4. Gọi async.waterfall bên trong async.each

  5. Gọi hàm gọi lại đầu tiên trả về a=14.

  6. Gọi hàm gọi lại thứ hai trả về c =14*14 =196.

Làm cách nào tôi có thể đạt được điều này bằng cách sử dụng async?

Cảm ơn trước và xin lỗi vì một câu hỏi dài như vậy.

câu trả lời hay nhất

Lệnh gọi lại của async.each() được gọi ở cuối async.waterfall() và lệnh gọi lại của FirstOrderFunction được gọi ở cuối async.each(). Đây là mã được sửa đổi:

hàm nắm tayOrderFunction(demosReturned, gọi lại){
var ret = [];

console.log("Được gọi là hàm ngoài");
async.each(demosReturned.locations, function(location, eachCb) {
console.log('Vị trí tính toán #');

async.waterfall([
hàm (thác nướcCb) {
console.log("Tính toán thác nước bên trong đầu tiên");
a = 14;
thác nướcCb(null,a);
},
hàm(a,thác nướcCb){
console.log("Tính toán thác nước thứ hai bên trong");
b =14;
c = a*b;
thác nướcCb(null,c)
}
],hàm(err,c){
if(err){
console.log("Lỗi là == " +err);
mỗiCb(err);
}khác{
ret.push(c);
console.log("Giá trị trả về là == "+c);
mỗiCb(null);
}
});//Kết thúc Async.Waterfall
},hàm(err){
if(err){
console.log("Lỗi trong Async.Each === " + err);
gọi lại (err, null);
}khác{
console.log("Giá trị trả về đã được xử lý");
gọi lại(null, ret);
}
}); //Kết thúc không đồng bộ.Each
}

Về javascript - cách gọi async.each trong một hàm bên ngoài có async.waterfall bên trong async.each, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/29382803/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress