我想在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