В следующем коде вызов resolve()
в точке (A) не приводит к выполнению условия then()
вызова createRequest()
.Код подходит к точке вызова resolve()
, который я подтвердил с помощью оператора печати.
const request = require('request');
function createRequest() {
return new Promise(function(resolve, reject) {
// Setup request
// ...
request(options, function(error, response, body) {
if(!error && response.statusCode == 201) {
// If the resolve() is done at this point, the then() clause is executed
uploadFiles(files)
.then(handles => {
console.log('handles: ' + handles); // This is printed
resolve('ok'); // (A) Then clause in call to createRequest is not called
})
.catch(reject(requestObj)); // (B) I didn't have this in my initial post
}
});
});
}
function uploadFiles(files) {
return new Promise(function(resolve, reject) {
// Upload files
// ...
resolve(handles);
});
}
createRequest()
.then(message => console.log(message) /* This never executes */)
[править]
Я добавил предложение catch()
к своему createRequest()
позвоните, и я был удивлен, увидев, что что-то напечатано, что было странно, потому что печаталось заявление handles:
.Я изменил (B) на следующее:
.catch(() => reject(requestObj));
, и моя проблема была решена.then()
в вызове createRequest
выполнялся.Не уверен, почему это происходит.