【发布时间】:2016-09-14 19:13:34
【问题描述】:
jsonix 库不遵循 first argument must be an error 约定,所以我决定使用 bluebird 并像这样承诺它:
return new Promise(function(resolve, reject) {
try {
unmarshaller.unmarshalString(xmlResponse,
function (unmarshalled) {
...
resolve(unmarshalled);
});
}
catch (error) {
reject(error);
}
});
但这会无限期地挂起!而如果我只是将xmlResponse 保存到一个文件中,然后用不同的方法处理它:unmarshalFile ... 承诺似乎工作得很好!
return new Promise(function(resolve, reject) {
try {
unmarshaller.unmarshalFile('test1.xml',
function (unmarshalled) {
...
resolve(unmarshalled);
});
}
catch (error) {
reject(error);
}
});
所以我的问题是,为什么一种方法的承诺会失败,而另一种方法则不会?
【问题讨论】: