Я использую функцию обещания в своем приложении. Прикрепленный ниже мой код:then() не срабатывает по функции обещания
module.exports = function (path)
{
return new Promise(function(resolve, reject)
{
fs.readFileAsync(path, encoding='UTF-8')
.then(function(data) {
return wmReuters.parseXMLtoJSON(data);
}).then(function(jsonedData) {
return new Promise(function(resolve, reject) {
resolve({
'name': jsonedData.newsMessage.itemSet[0].packageItem[0].contentMeta[0].slugline[0]['_'],
'description': jsonedData.newsMessage.itemSet[0].packageItem[0].contentMeta[0].headline[0]['_'],
'date': jsonedData.newsMessage.itemSet[0].packageItem[0].itemMeta[0].firstCreated[0],
'ingestDate': new Date(),
'lastModified': jsonedData.newsMessage.itemSet[0].packageItem[0].itemMeta[0].versionCreated[0],
'sourceId': jsonedData.newsMessage.itemSet[0].packageItem[0].contentMeta[0].altId[0]['_'],
'sourceNmae': 'Reuters',
});
});
}).catch(function(err) {
reject(new Error('Parsing Error: ' + err));
});
});
}
и я назвал эту функцию в другом файле (эта функция импортируется как синтаксический анализатор)
parser('./Ingestor/XMLs/2014script/2014-01-01T000815Z_3_WNE9CUATJ_RTRWNEC_0_2210-UAE-DUBAI-NEW-YEAR-FIREWORKS.XML').then(function(obj) {
console.log(obj);
}).then(function(clip) {
console.log(clip);
}).catch(function(err) {console.log(err);})
Первый тогда() прилагается после синтаксического анализа никогда не срабатывает. Интересно, что не так с моим кодом (Возможно, что-то не так с решением, я думаю, но я не уверен, где)
Я решил это, добавив. Then (разрешить, отклонить) после catch (function (err)). Тем не менее, приятно поймать! – TheCoolestPenguin
@ TheCoolestPenguin - '.then (разрешить, отклонить)' является анти-шаблоном (отходы кода и не нужны). Это никогда не понадобится. Если вы изучите и скопируете мой ответ, вы увидите, что вам вообще не нужно создавать свои собственные обещания. Вы можете просто вернуть тот, который 'fs.readFileAsync()' уже создан, и просто привязать другие операции к этому обещанию. – jfriend00
Спасибо! Не было обещаний. Теперь я понимаю это намного лучше. – TheCoolestPenguin