异步回调api嵌套在新的promise中

时间:2017-01-24 14:05:14

标签: javascript node.js asynchronous ecmascript-6 promise

我想在promise中包装一个异步node_module函数(xml2js - parseString)。但是我担心我可能会创建一个竞争条件,其中promise代码在嵌套的异步parseString函数完成之前以某种方式解析。这有可能发生吗?每隔一段时间我们就会得到一个"错误:超过2000毫秒的超时。"在测试期间。我试图消除原因。

我的承诺功能

map1(soapResponse) {
   var promise = new Promise(function(resolve) {

     parseString(soapResponse[config.responseProperty], {
       ignoreAttrs: true,
       explicitArray: false
     }, function(err, jsObject) {
       let policyDAO = new PolicyDAO()

       policyDAO.givenName = jsObject["aeroplanes"]["aeroplane"]["given-name"]

       return resolve(policyDAO);
     });
   })

   return promise
 }

使用函数 -

var policyMapper = new PolicyMapper()
policyMapper.map1(soapResponse)
  .then(function (policy) {
    //synchronised code
  })

supertest -

var request = require('supertest')
var app = require('app')

describe('get /details', function () {
  it('return 200 (OK) and username for policy 999999', function (done) {
    request(app).post('/').send({id: '999999'})
      .expect(200)
      .expect(/CHARLES SMITH/, done);
  });

})

我使用节点(v6.2.2),ES6,express,mocha,chai,supertest

0 个答案:

没有答案