NodeJS承诺标识符

时间:2017-03-27 16:23:07

标签: node.js promise

我尝试使用NodeJS中的q模块在循环中识别已解析的promise。

    var portscanner = require('portscanner');
    var Q = require('q');

    var portScan1 = function(ip) {
     return portscanner.checkPortStatus(22, ip);
    }

    var portScan2 = function(ip) {
     return portscanner.checkPortStatus(80, ip);
    }

    for(var i=1; i<=254; i++) {
     var ip = '10.10.1.' + i;
     Q.all([portScan1(ip), portScan2(ip)]).then(function(resolve) {
      console.dir({ ip: ip, func1result: resolve[0], func2result: resolve[1] });
     });
    }

问题是变量 i 一直到99,直到第一个Q被解析。

{ ip: '10.10.1.254', func1result: 'open', func2result: 'closed' }
{ ip: '10.10.1.254', func1result: 'closed', func2result: 'closed' }
{ ip: '10.10.1.254', func1result: 'closed', func2result: 'open' }
{ ip: '10.10.1.254', func1result: 'closed', func2result: 'open' }
... (and so on)

如何解决此问题,以便为已解决的承诺识别 id

THX

0 个答案:

没有答案