在node
端调用接口。
有一个list
页面,for
循环里每次都会调用一次接口取信息,导致接口串行调用频繁,耗费时间非常多。
改用co
模块来将放在一起统一调用后,速度提升非常多。疑问来了,为什么用co
会变成并行调用接口了?
使用co
后大致代码是这样:里面的几个函数都是去调用接口的函数。
for (var i=0;i<feedCount; i++) {
var item = {
offerDetails: getOfferDetails(),
feedPVCount: getFeedCount(),
beSavedCount: getFavedCount()
};
var defer = co(function* () {
return yield item;
});
results.push(defer);
}
results = yield results;
1、co() 将generator函数包装成promise
2、results是一个promise数组,可迭代的;若在yield后的是Promise数组或属性值为Promise对象的对象,则并行执行这些Promise。
具体你可以看下co源码: