Tag: asynchronous

为node.jscallback实现超时

这是node.js中的典型情况: asyncFunction(arguments, callback); 当asynFunction完成时, callback被调用。 我用这种模式看到的一个问题是,如果asyncFunction 从不完成(并且asynFunction没有内置的超时系统),那么callback将永远不会被调用。 更糟糕的是,似乎callback没有办法确定asynFunction将永远不会返回。 我想实现一个“超时”,如果在1秒内没有被asyncFunction调用callback asyncFunction ,那么callback自动被调用,假设asynFunction出错了。 这样做的标准方式是什么?

所有的JavaScriptcallback是asynchronous的吗? 如果没有,我怎么知道哪些是?

我很好奇所有的JavaScriptcallback是否是asynchronous的,或者只是在某些情况下是这种情况。 此外,我确定JavaScript代码asynchronous(或使用asynchronousJavaScript的方法)是什么使浏览器和nodejs不同,所以我想知道在每种情况下构成真正的asynchronousJavaScript。 我的印象是,在下面的情况下,我实际上没有编写asynchronous代码。 function addOne(value){ value = value + 1; return value; } function simpleMap(values, callback){ for(i = 0; i < values.length; i++){ val = values[i]; val = callback(val); values[i] = val; } return values; } newValues = simpleMap([1,2,3], addOne); 但是,例如,我知道jQuery的AJAXfunction是真正的asynchronous(不考虑现在可用的承诺)。 什么是使jQuery的AJAXasynchronous? 它是否涉及XHR请求,并且在浏览器中,所有的XHR请求都是asynchronous的? 我对nodejs环境有同样的问题。 如果节点中的某些东西像文件I / O,process.nextTick,setTimeout或setInterval那样只能是asynchronous的? 为什么当我用mongodb / mongoose进行数据库调用时,是asynchronous的? 幕后发生了什么事情呢? 是由环境预先确定的asynchronous“情况”? 或者有没有办法使自己的function真正的asynchronous,而不是利用环境的非常具体的function(如xhr,节点中的文件io,process.nexttick等)?

Node.JS:如何将variables传递给asynchronouscallback?

我确定我的问题是基于对node.js中asynchronous编程的理解不足,但是在这里。 例如:我有一个我想要抓取的链接列表。 当每个asynchronous请求返回时,我想知道它是哪个URL。 但是,可能是因为竞争条件,每个请求返回与URL设置为列表中的最后一个值。 var links = ['http://google.com', 'http://yahoo.com']; for (link in links) { var url = links[link]; require('request')(url, function() { console.log(url); }); } 预期产出: http://google.com http://yahoo.com 实际产出: http://yahoo.com http://yahoo.com 所以我的问题是: 如何将URL(通过值)传递给callback函数? 要么 链接HTTP请求的正确方法是什么,使它们顺序运行? 要么 还有什么我失踪? PS:对于1.我不想要一个解决scheme,检查callback的参数,而是一个callback的一般方式知道variables'从上面'。

在node.js中使用Async瀑布

我有2个function,我正在asynchronous运行。 我想用瀑布模型来写。 事情是,我不知道如何.. 这是我的代码: var fs = require('fs'); function updateJson(ticker, value) { //var stocksJson = JSON.parse(fs.readFileSync("stocktest.json")); fs.readFile('stocktest.json', function(error, file) { var stocksJson = JSON.parse(file); if (stocksJson[ticker]!=null) { console.log(ticker+" price : " + stocksJson[ticker].price); console.log("changing the value…") stocksJson[ticker].price = value; console.log("Price after the change has been made — " + stocksJson[ticker].price); console.log("printing the the Json.stringify") console.log(JSON.stringify(stocksJson, […]

为什么node.js是asynchronous的?

没有人真正问过这个问题(从我提出的所有“build议”中,在我问到这里之前,也从中寻找)。 那么为什么node.js是asynchronous的呢? 从我在一些研究中推论出来的: 像PHP和Python这样的语言是脚本语言(我可能是错误的脚本语言的实际语言),而JavaScript不是。 (我想这是源于JS不编译的事实?) Node.js在单线程上运行,而脚本语言使用multithreading。 asynchronous意味着无状态,连接是持久的,而同步是(几乎)相反的。 也许答案是在上面的某个地方find的,但是我还不确定。 我的第二个也是最后一个与这个话题有关的问题是: JavaScript可以变成同步语言吗? PS。 我知道你们中的一些人会问“你为什么要让JS同步?” 在你的答案中,但事实是,我没有。 我只是问这些types的问题,因为我确信有更多的人在那里,而不仅仅是我自己曾经想过这样的问题。

Node.jsasynchronous库比较 – Q vsasynchronous

我已经使用kriskowal的Q库作为一个项目(网页刮板/人类活动模拟器),并已经熟悉了承诺,返回并解决/拒绝了它们,图书馆的基本asynchronous控制stream方法和错误捕获/捕获机制已经被证实必要。 我遇到了一些问题。 我的promise.then电话和我的callback有形成金字塔的不可思议的倾向。 有时候是为了确定范围的原因,有时是为了保证一定的事件顺序。 (我想我可以通过重构来解决其中的一些问题,但是我希望完全避免“callback地狱”)。 另外,debugging非常令人沮丧。 我花了很多时间console.log我的方式来错误和错误的来源; 在我终于find它们之后,我将开始在那里抛出错误,并以最终的promise.finally将它们捕捉到别的地方,但把错误定位在首位的过程是艰巨的。 另外,在我的项目中, 订单很重要 。 我需要按顺序做很多事情。 通常我会发现自己生成的函数数组返回promise,然后使用Array.prototype.reduce将它们链接到彼此,我不认为我应该这样做。 这里是我使用这种缩减技术的一个方法的例子: removeItem: function (itemId) { var removeRegexp = new RegExp('\\/stock\\.php\\?remove=' + itemId); return this.getPage('/stock.php') .then(function (webpage) { var pageCount = 5, promiseFunctions = [], promiseSequence; // Create an array of promise-yielding functions that can run sequentially. _.times(pageCount, function (i) { var promiseFunction […]

以同步方式执行asynchronous调用

在过去的几个小时里,我一直试图绕过这个问题,但无法弄清楚。 我想我还是必须习惯于函数式的编程风格;) 我写了一个遍历目录结构的recursion函数,并对某些文件进行处理。 这个函数使用asynchronousIO方法。 现在我想在整个遍历完成时执行一些操作。 我如何确保在所有parse调用完成后执行此操作,但仍使用asynchronousIOfunction? var fs = require('fs'), path = require('path'); function parse(dir) { fs.readdir(dir, function (err, files) { if (err) { console.error(err); } else { // f = filename, p = path var each = function (f, p) { return function (err, stats) { if (err) { console.error(err); } else { if […]

限制和排队API请求由于每秒上限

我正在使用mikeal /请求进行API调用。 我最经常使用的API之一(Shopify API)。 最近推出了一个新的呼叫限制 ,我看到像这样的错误: Exceeded 6.0 calls per second for api client. Slow your requests or contact support for higher limits. 我已经得到了升级,但是无论我得到多less带宽,我都必须考虑到这一点。 Shopify API的大部分请求都在async.map()函数中,这些函数循环asynchronous请求并收集这些主体。 我正在寻找任何帮助,可能是一个已经存在的库,它将环绕请求模块,实际上阻塞,hibernate,扼制,分配,pipe理asynchronous触发的多个同时请求,并限制它们说6请求一次。 如果这个项目不存在,我就没有问题了。 我只是不知道如何处理这种情况,我希望有某种标准。 我用麦克风/请求做了一张票。

Node.js vs Async /等待.net

有人可以解释/redirect我,Node.js的asynchronous模型(非阻塞线程)与任何其他语言(例如c#处理I / O的asynchronous方式)之间的区别是什么。 这看起来对我来说都是同一个模型。 请build议。

SyntaxError:意外的标记函数 – asynchronous等待Nodejs

我正在尝试使用节点版本6.2.1与我的一些代码。 有计划将大部分超callback定向代码迁移到看起来更干净,可能performance更好的东西。 我不知道为什么,当我尝试执行节点代码时,terminal抛出一个错误。 helloz.js (async function testingAsyncAwait() { await console.log("For Trump's Sake Print me!"); })(); 日志- BOZZMOB-M-T0HZ:rest bozzmob$ node helloz.js /Users/bozzmob/Documents/work/nextgennms/rest/helloz.js:1 (function (exports, require, module, __filename, __dirname) { (async function testingAsyncAwait() { ^^^^^^^^ SyntaxError: Unexpected token function at Object.exports.runInThisContext (vm.js:53:16) at Module._compile (module.js:513:28) at Object.Module._extensions..js (module.js:550:10) at Module.load (module.js:458:32) at tryModuleLoad (module.js:417:12) at Function.Module._load (module.js:409:3) […]