Tag: 等待

非阻塞文件在nodejs中使用wait.for进行暂停读取

我有以下问题。 我想阅读一个文件之间的行读取非阻塞暂停。 我用wait.for和懒得分别等待和读取文件。 当我呼吁等待,我得到错误:wait.for只能在光纤内调用任何人都可以告诉我如何访问线对象。 我试图做一个单独的function,但是然后我失去行variables持有该行。 var lazy = require("lazy"), fs = require("fs"); wait = require('wait.for'); wait.helper={}; wait.helper.timeout_callback = function(ms,callback){ setTimeout(callback,ms); //call callback(null,null) in ms miliseconds } wait.miliseconds = function(ms){ wait.for(wait.helper.timeout_callback,ms); } function test(){ new lazy(fs.createReadStream('./test.txt')) .lines .forEach( function(line){ //wait.miliseconds(1*1000); // this causes Error: wait.for can only be called inside a fiber console.log(line.toString()); } ); } […]

Node.js / Javascript – 等到方法完成

我正在写一个蒸汽交易机器人,但我有一个问题,for循环不会等到for循环内部的方法完成。 所以代码不能正常工作。 for (i = 0; i < offer.itemsToReceive.length; i++) { console.log(offer.itemsToReceive[i].market_hash_name); community.getMarketItem(appid.CSGO, offer.itemsToReceive[i].market_hash_name, function(err, items) { if (err) { Winston.error("Error getting Marketprice"); } else { var cacheItemPrice = items.lowestPrice; totalValue += items.lowestPrice; Winston.info("Item " + offer.itemsToReceive[i].market_hash_name + " is " + items.lowestPrice + " Cents worth"); if (items.lowestPrice <= minValue) { minValue = items.lowestPrice; […]

如何使一个NodeJs函数等待?

例如,我有这两个function: var count= function(){ for(i=1;i<=3;i++){ console.log(i); } setTimeout(function(){ for(i=1;i<=3;i++){ console.log(-i); } },2000); } var letters = function(){ var charSet = 'abcdefghijklmnopqrstuvvwxyz' for(i=0;i<3;i++){ console.log(charSet[i]); } } 当我按这个顺序执行它们时: count(); letters(); 我期望得到输出: 1 2 3 -1 -2 -3 abc 但是我得到的是: 1 2 3 abc -1 -2 -3 为什么函数不等待超时结束? 我怎样才能达到预期的行为?

Nodejs Childexec为文件中的每一行执行命令,但等待第一个命令退出后再运行下一个命令

我正在使用nodejs与我所做的casperjs脚本进行通信。 首先我会告诉你我的Casperjs脚本是做什么的。 我已经用命令行input来设置它。 我运行这个命令 casperjs script.js "Inputdata1" "inputdata2" 这个脚本然后执行并访问我的一个服务器提交input数据1和2。 然后等待服务器响应并根据脚本从我的服务器获得的结果将行权限到10个文本文件之一 这然后退出。 这casperjs脚本工作正常没有问题。 现在我正在构build一个nodejs脚本来反复运行casperjs脚本 我的nodejs脚本假设使用readline.js读取文本文件,然后对每行使用里面的数据执行Casperjs命令。 问题是我的脚本一次执行每个执行,并且我没有从casperjs的文本文件中得到任何结果 我需要我的nodejs脚本来执行第一行等待Casperjs退出,然后才移动到下一行并用Casperjs执行 而且我还需要真正的casperjs脚本像往常一样工作 这里是我的nodejs脚本 – 我一直在这个好几天尝试不同的代码不同的模块,但不能解决它,所以任何帮助是极大的赞赏 var fs = require('fs'), sleep = require('sleep'), readline = require('readline'); var rd = readline.createInterface({ input: fs.createReadStream('file.txt'), output: process.stdout, terminal: false }); rd.on('line', function(line) { var exec = require('child_process').exec; var child = exec('casperjs check.js ' + […]

Node.js – 需要睡眠

考虑以下情况: 在我的一个cron作业里,我请求别人的服务,只允许请求3600秒。 该API类似于GetPersonForName=string 。 考虑到我的数据库中有一些people ,我需要尽可能地更新他们的信息,我扫描我的数据库所有的人,并调用这个API。 例 // mongodb-in-use People.find({}, function(error, people){ people.forEach(function(person){ var uri = "http://example.com/GetPersonForName=" + person.name request({ uri : uri }, function(error, response, body){ // do some processing here sleep(3600) // need to sleep after every request }) }) }) 不知道睡觉是否是一个想法,但是我需要等待3600秒。