编辑 继续重试直到承诺解决的模式(使用delay和maxRetries)。 继续重试直到条件符合结果(具有延迟和maxRetries)的模式。 具有无限次重试的内存高效dynamic模式(提供延迟)。 代码为#1。 不断重试,直到承诺解决(语言等任何改进社区?) Promise.retry = function(fn, times, delay) { return new Promise(function(resolve, reject){ var error; var attempt = function() { if (times == 0) { reject(error); } else { fn().then(resolve) .catch(function(e){ times–; error = e; setTimeout(function(){attempt()}, delay); }); } }; attempt(); }); }; 使用 work.getStatus() .then(function(result){ //retry, some glitch in the system […]
我想获取login到我的应用程序的用户的Facebook个人资料图片。 Facebook的API声明http://graph.facebook.com/517267866/?fields=picture将正确的URL作为JSON对象返回。 我想从我的代码中获取图片的url。 我尝试了以下,但我在这里失去了一些东西。 var url = 'http://graph.facebook.com/517267866/?fields=picture'; http.get(url, function(res) { var fbResponse = JSON.parse(res) console.log("Got response: " + fbResponse.picture); }).on('error', function(e) { console.log("Got error: " + e.message); }); 运行此代码将导致以下结果: undefined:1 ^ SyntaxError: Unexpected token o at Object.parse (native)
出于某种原因,我的节点服务器不能服务路由/socket.io/socket.io.js ,我总是得到一个404错误。 我试着编译不同的节点版本( 当前是0.6.13,它也运行在服务器上,实际上工作 )。 从app.js我得到的info: socket.io started并尝试调用socket.io.js时没有错误。 我尝试从本地主机和端口8000,我使用快速框架 这是来自app.js的代码: var express = require('express') , app = require('express').createServer() , io = require('socket.io').listen(app, { log: true }); app.listen(8000); app.configure(function() { app.use(express.static(__dirname + '/public')); app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); }); io.sockets.on('connection', function (socket) { // all other stuff here
这个最近的video声称,EMCAScript 6解构已经部分在Node.JS中实现。 我已经尝试了各种示例(使用v0.10.12和–harmony标志),如 var [a, b] = [1, 2]; 和 var {a: a, b: b} = {a: 1, b: 2}; 无济于事。 这张票似乎表明解构还没有在V8中得到支持。 Node.JS中的解构是否部分实现? 什么是我可以玩的代码片段?
有什么办法可以创build线程一次运行多个方法。 如果任何方法在所有其他线程之间失败应该被杀死。 提前致谢
运行npm install <package>时可以指定目标目录吗?
假设你维护一个公开函数getData的库。 您的用户称之为获取实际数据: var output = getData(); 数据保存在文件中,所以你使用Node.js内置的fs.readFileSync来实现getData 。 很显然, getData和fs.readFileSync都是同步函数。 有一天,您被告知将底层数据源切换到一个只能asynchronous访问的回购库(如MongoDB)。 你也被告知要避免让用户streamgetData , getData API不能改变只返回一个promise或者需要一个callback参数。 你如何满足这两个要求? 使用callback / promise的asynchronous函数是JavasSript和Node.js的DNA。 任何不平凡的JS应用程序可能渗透了这种编码风格。 但这种做法很容易导致所谓的厄运callback金字塔。 更糟糕的是,如果调用链中的任何调用者的代码都依赖于asynchronous函数的结果,那么这些代码也必须被包装在callback函数中,并且对调用者施加编码风格约束。 有时我会发现需要将asynchronous函数(通常在第三方库中提供)封装到同步函数中,以避免大规模的全局重构。 在这个主题上寻找解决scheme通常最终会得到Node Fibers或npm包。 但纤维丝毫无法解决我所面临的问题。 即使Fibers的作者提供的例子也说明了这一缺陷: … Fiber(function() { console.log('wait… ' + new Date); sleep(1000); console.log('ok… ' + new Date); }).run(); console.log('back in main'); 实际产出: wait… Fri Jan 21 2011 22:42:04 GMT+0900 (JST) back […]
我已经安装了gulp全球和本地使用 npm install gulp npm install gulp -g npm install gulp-util npm install gulp-util -g 当试图运行吞咽我得到 'gulp' is not recognized as an internal or external command, operable program or batch file. 运行npm list gulp@3.7.0 (或-g),我的gulp@3.7.0与我的全局或本地gulp@3.7.0安装的位置。 我试过运行node gulpfile.js指向我的大文件,它运行没有错误,当然,它开始与require('gulp') 。 有关在Windows(8.1)上进行大量工作的build议?
我不完全了解如何获得远程用户IP地址。 比方说,我有一个简单的请求路线,如: app.get(/, function (req, res){ var forwardedIpsStr = req.header('x-forwarded-for'); var IP = ''; if (forwardedIpsStr) { IP = forwardedIps = forwardedIpsStr.split(',')[0]; } }); 上面的方法是否正确得到真正的用户IP地址还是有更好的办法? 那么代理呢?
我需要通过npm下载几个包,但我们的公司代理configuration是一个.pac文件(我在Windows上) 我已经尝试过了 npm config set proxy http://mydomain\username:password@1.2.3.4:8181/proxy.pac npm config set https-proxy http://mydomain\username:password@1.2.3.4:8181/proxy.pac 要么 npm config set proxy http://1.2.3.4:8181/proxy.pac npm config set https-proxy http://1.2.3.4:8181/proxy.pac 但它不起作用… 有什么build议? 谢谢