VAR函数调用未知原因



我有下面的代码,它似乎调用了调用var promiseFeedback,我不知道为什么...这意味着即使在创建文档时发生错误也会调用它。而 is 只有在 createDocument 中没有err时才应调用。

有人能够弄清楚为什么吗?

if (json) {
createDocument(documentUrl, context, json, function(res){
var promiseFeedback = callFB (context, res);
var collection = `mydb`
client.createDocument(collection, res, (err, result) => {
if(err) {
context.log(err);
return context.done();
} else {
Promise.all([promiseFeedback]).then(function(results){ 
context.log("promiseFeedback: " + results[0]);
context.done();
});
}
});
});
}
function callFB(context, res) {
return new Promise((resolve, reject) => {
var requestUrl = url.parse( URL );
var requestBody = {
"id": res.id
};
var body = JSON.stringify( requestBody );
const requestOptions = {
hostname: requestUrl.hostname,
path: requestUrl.path,
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': Buffer.byteLength(body),
}
};
var request = https.request(requestOptions, function(res) {
var data ="";
res.on('data', function (chunk) {
data += chunk
});
res.on('end', function () {
resolve(true);
})
}).on('error', function(error) {
context.log("request error:", error);
resolve(false);
});
request.write(body);
request.end();
});    
}
var promiseFeedback = callFB (context, res);

此语句立即执行callFB,而不仅仅是为承诺分配另一个名称。这个承诺callFB超出了errPromise.all([promiseFeedback])的回调(范围(,无论client.createDocument的结果是什么,它都会运行。

要解决此问题,请执行以下操作:

删除var promiseFeedback = callFB (context, res);并将Promise.all([promiseFeedback])更改为callFB(context, res)。 您不需要使用Promise.all因为您只有一个承诺要解决。

或者,您可以将var promiseFeedback = callFB (context, res);移动到其他细分中。

最新更新