【发布时间】:2017-02-13 10:28:33
【问题描述】:
当我将 Promise 的解析/拒绝处理移至命名函数时,它不起作用。有人能解释一下为什么吗?
作品:
function getPremium(policyNumber, agentNumber) {
return new Promise(function (resolve, reject) {
soap.createClient(wsdl, function (error, client) {
client.addSoapHeader(soapHeader());
client[config.webMethodName](soapBody(number), (error, soapResponse) => {
return resolve(soapResponse);
});
});
});
}
不起作用:
var handleResponse = (error, soapResponse) => {
return resolve(soapResponse);
}
function getPremium(policyNumber, agentNumber) {
return new Promise(function (resolve, reject) {
soap.createClient(wsdl, function (error, client) {
client.addSoapHeader(soapHeader());
client[config.webMethodName](soapBody(number), handleResponse);
});
});
}
【问题讨论】:
-
当然不行,在这段代码中
var handleResponse = (error, soapResponse) => { return resolve(soapResponse); }没有定义。当handleResponse被创建(解析和解释)时,它绑定到外部上下文(闭包)。handleResponse不知道以后怎么用。 -
@dfsq - 所以没有办法将回调从父函数中抽象出来以进行单元测试?
标签: javascript node.js ecmascript-6 promise es6-promise