我已成为jQuery新的和令人惊讶的Deferred模块的熟练用户,并且由于我正在使用更多的Node.js,我发现自己想要在我的Node.js编程中完全喜欢它的东西:回调阻塞直到随着任务的复杂性增加,可以自由地随意添加到数组中 - 例如当处理数据树时,其大小在开始时是未知的任务.
但是node-fibers需要一个全新的可执行文件,Q()界面只是node-step让人困惑,而且似乎只能处理单任务同步.
有人刚刚将jQuery的Deferreds移植到节点就绪形式吗?它似乎不太可能,Deferreds似乎也不依赖于DOM可用的功能,但我没有找到服务器端的等价物.
我正在尝试找到创建异步调用的最佳方法,当每个调用依赖于先前的调用已完成.目前我通过递归调用定义的过程函数来链接方法,如下所示.
这就是我目前正在做的事情.
var syncProduct = (function() {
var done, log;
var IN_CAT = 1, IN_TITLES = 2, IN_BINS = 3;
var state = IN_CAT;
var processNext = function(data) {
switch(state) {
case IN_CAT:
SVC.sendJsonRequest(url("/api/lineplan/categories"), processNext);
state = IN_TITLES;
break;
case IN_TITLES:
log((data ? data.length : "No") + " categories retrieved!");
SVC.sendJsonRequest(url("/api/lineplan/titles"), processNext);
state = IN_BINS;
break;
case IN_BINS:
log((data ? data.length : "No") + " titles retrieved!");
SVC.sendJsonRequest(url("/api/lineplan/bins"), processNext);
state = IN_MAJOR;
break;
default:
log((data ? data.length : "No") + …Run Code Online (Sandbox Code Playgroud) javascript titanium serverside-javascript node.js titanium-mobile
我正在使用express with node for rest api,我需要运行for循环来确定输出json.我的路线文件看起来
var Redis = require('ioredis')
var redis = new Redis({
port: 6379,
host: '127.0.0.1',
family: 4,
password: 'password',
db: 0
});
var Jsonresult = {};
var process = function(lat,lon,dist,unit)
{
Jsonresult.result = 'success';
var vehicle_type = new Array('small','medium');
vehicle_type.forEach(function(vehicle, index, arr)
{
redis.georadius ( vehicle,lat,lon ,dist,unit,'WITHCOORD','WITHDIST',function( ERR , Result )
{
if (ERR)
{
console.log(ERR);
}
Jsonresult[vehicle] = Result;
}) ;
})
return Jsonresult;
}
router.get('/:lat/:lon/:dist/:unit', function(req, res, next) {
var lat = req.params.lat;
var …Run Code Online (Sandbox Code Playgroud)