我在节点异步操作(来自 PHP 背景)方面遇到了非常困难的时间。我知道你可以嵌套回调,但这很快就会失控。
这是一个我想同步解决的基本示例(我知道对于这个示例异步解决可能很简单,但我需要知道如何同步解决更复杂的项目)。
这是一个快速应用程序,我正在尝试计算优惠券的使用次数:
var express = require('express');
var wrap = require('co-express');
app.post('/grab-valid-coupons', wrap(function* (req, res) {
var validCoupons = [];
console.log('grabbing coupons');
var coupons = yield db.collection('Coupons').find({}).toArray();
coupons.forEach(wrap(function* (coupon, index) {
console.log(coupon.code, 'CODE');
var couponUse = 0;
couponUse += yield db.collection('Rentals').find({coupon: coupon.code}).count();
couponUse += yield db.collection('Orders').find({coupon: coupon.code}).count();
console.log(couponUse);
if(couponUse < coupon.uses) {
validCoupons.push(coupon);
}
}));
res.json(validCoupons);
}));
第一个产量有效,但我尝试计算所有内容的部分导致整个服务器挂起。有任何想法吗?