Tag: asynchronous

方法在完成函数执行之前返回值

function rip(intent_update, output_rnr){ var headers_conv = { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'Basic YWFjZWU2M' }; var dataString = '{ "output": { "text": { "values": [' + output_rnr + '] } } }'; var options_conv = { url: 'https://watson-api-explorer.mybluemix.net/'+ intent_update + '?version=2017-05-26', method: 'POST', headers: headers_conv, body: dataString }; function callback_conv(error, response, body) { if (!error […]

NodeJS 7:EventEmitter +等待/asynchronous

我们如何通过传递给事件发射器的callback来结束async函数, 而不会使事件发射器事件发生 ? 也没有使用外部模块 ,只是简单的NodeJS 7.x / 8.x (它支持Es6语法和async/await 。 我们基本上要把一个async function …和一个事件发射器混合在一起,以便在事件发射器信号end时解决。 另外请记住,我们不会以事件发射器开始,直到完成一些其他的asynchronous函数,使用await 。 如果我们有一个“新的承诺(…)”,我们将调用resolve(); 头痛会结束,但在“asynchronous”没有“决心”,再加上我们不能使用“回报”,因为我们在callback。 /* * Example of mixing Events + async/await. */ // Supose a random pomise'd function like: function canIHazACheezBurger () { return new Promise((resolve, reject) => { setTimeout(() => { resolve(Math.random() > 0.5); }, 500 + Math.random() * 500) […]

Async.eachSeries:已经调用callback

这是一个有点长和杂乱的代码,但请忍受我,因为我需要完成这个。 我正在尝试为每个用户更新一个json对象。 我想循环迭代等待asynchronous过程结束,以避免竞争条件。 然而,这导致了一个callback地狱,现在我不能决定什么是正确的地方为每个callback被返回。 我在嵌套async.eachSeries上提到了这个答案,并试图根据它来构造我的代码。 但是,这仍然行不通。 该代码在callback1()提供了已经调用的错误。 async.eachOfSeries(res, function (value, camp, callback3) { let _id = res[camp]._id; let arr = res[camp].campaignID; async.eachOfSeries(arr, function2, function (err) { callback3(); }) function function2(value1, i, callback2) { let users = arr[i].users; let id = arr[i].id; let loop = Math.ceil(users / 1000); let limit = 0, offset = 0; for […]

nodejs强制同步调用来存储json

我有一个function,使 n调用服务器(在for循环中), 获取json响应 将响应组合在一起以创build一个json 并将该json存储在MongoDB中 我想等待所有的响应完成,巩固响应,然后存储一个json。 下面是代码 函数getBucketStoreJson(服务器,用户名,密码){ var tmp_json = {}; for (var j = 0; j < servers.length; j++){ var server = servers[j]; var options = { 'host': server.toString(), 'port': port, 'path': somepath, 'method': 'GET', 'auth':username.toString()+':'+password.toString() }; //logger.debug("options : " + JSON.stringify(options)); var request = http.request(options,function(res){ var fullBucketJson = ""; logger.info('STATUS: ' + […]

不能用asynchronous做http请求并等待

试图使用async并await在nodejs中执行http请求,但得到错误。 有任何想法吗? 谢谢 got response: undefined /home/tom/learn/node/node_modules/node-rest-client/lib/node-rest-client.js:539 callback(parsedData,res); ^ TypeError: callback is not a function at /home/tom/learn/node/node_modules/node-rest-client/lib/node-rest-client.js:539:13 at Object.parse (/home/tom/learn/node/node_modules/node-rest-client/lib/nrc-parser-manager.js:151:3) at ConnectManager.handleResponse (/home/tom/learn/node/node_modules/node-rest-client/lib/node-rest-client.js:538:32) at ConnectManager.handleEnd (/home/tom/learn/node/node_modules/node-rest-client/lib/node-rest-client.js:531:18) at IncomingMessage.<anonymous> (/home/tom/learn/node/node_modules/node-rest-client/lib/node-rest-client.js:678:34) at emitNone (events.js:110:20) at IncomingMessage.emit (events.js:207:7) at endReadableNT (_stream_readable.js:1059:12) at _combinedTickCallback (internal/process/next_tick.js:138:11) at process._tickCallback (internal/process/next_tick.js:180:9) 这是脚本的源代码 var Client = require('node-rest-client').Client; var client = new Client(); async […]

hibernate/等待,直到进程在asynchronous循环过程中完成

我加载一个JSON数据与请求(长度125664),并从该数据,我做循环与,当然我不能一次全部显示,因为它可能会导致内存泄漏等,如何使用在每一行的rest时间,我尝试了各种方法,从setTimeout等,但没有任何工作 目前我的代码是: request({ url: config.url.productSource, json: true }, function(error, response, body) { console.log(body.length); for(let link of body) { console.log(link); product(link); // call puppeteer headless browser (async) stats(link); // call puppeteer headless browser (async) } });

自定义节点同步function

节点提供了两种风格的核心function,同步和asynchronous。 像fs.readFileSync这样的同步function对启动应用程序非常有用,例如在npm包dotenv中。 是否有可能编写一个自定义Sync函数,不需要async和await关键字,从而绕过承诺和callback地狱?

在节点js中正确使用asynchronous

为了克服JavaScript中的callback地狱,我试图使用从SQLServer过程中编写的遗留代码asynchronous等待。 但是我不确定我的代码是否可以正确写入。 我的第一个令人困惑的地方是,asynchronous函数返回时,是否应该返回resolve()作为布尔值,或只是返回拒绝和try-catch处理? 这是我的代码片段。 请纠正我正确的方向。 apiRoutes.js app.route('/api/dansok/cancelDansok') .post(dansokCancelHandler.cancelDansok); dansokCancelController.js const sequelize = models.Sequelize; const jwt = require('jsonwebtoken'); async function jwtAccessAuthCheck(accessToken) { if (!accessToken) { return Promise.reject('Empty access token'); } jwt.verify(accessToken,"dipa",function(err){ if(err) { return Promise.reject('TokenExpiredError.'); } else { return Promise.resolve(); } }); } async function checkFeeHist(dansokSeqNo) { let feeHist = await models.FeeHist.findOne({ where: { DansokSeqNo: dansokSeqNo} […]

在一个请求中逐个发送回应?

有没有办法做一个请求,每次write回应呢? 我想做1个请求,并在里面做10个请求的数据库,当一个查询响应写在html ? 我怎么能做到这一点? 我的api routeHandlers = () => { let data: Array<any> = []; this._router.get('/api/countdetails/:uid', (req, res) => { let uid = req.params.uid; console.log(req); for (let i = 0; i < 10; i++) { data.push({ id: 'request' + i, startTime: performance().toFixed(3) }); let query = `SELECT ${i} AS ID, * FROM CountDetails WHERE UID='${uid}'`; […]

在视觉工作室代码控制台日志不打印原始数据,但在terminal工程?

var fs = require('fs'); fs.readFile(process.argv[1], function callBack(err, data){ if(err){ return; } console.log('raw data ::', data); console.log('string ::', data.toString()); }) 输出甚至不打印“原始数据::”行。