Я новичок в концепции обещаний, а также JavaScript в целом. Я пытаюсь написать функцию в Node.js, чтобы передать URL-адрес обещанию результатов.return new Promise() не работает в Node.js
Я запрограммировал его двумя способами. Первое не работает, в котором я могу передать URL-адрес функции. Второй работает, в котором URL статически определяется. Первый не работает, потому что компилятор не считает, что это функция по какой-то причине, которую я не могу понять, почему?
этот способ не работа как функции getJson
не интерпретируется Узлом как функция:
var options = { method: 'GET',
url: URL, // This will be dynamically filled by the argument to the function getJson
headers: { authorization: 'OAuth realTokenWouldBeHere', Accept: 'application/json' } };
var getJson = function(URL){
return new Promise(function(resolve, reject) {
request(options, function (error, response, body) {
if(error) reject(error);
else {
resolve(JSON.parse(body)); //The body has an array in the jason called Items
}
});
}); // Edited original post. Had two curly braces }}; here by accident, which was why function was not being recognized
};
getJson.then(function(result) {
console.log(result.Items); // "Stuff worked!"
}, function(err) {
console.log(err); // Error: "It broke"
});
ЭТО ПУТЬ работает и я вернусь массив элементов к пульту. Недостатком этого является то, что используемый URL является статическим. То, что я пытаюсь сделать, - это связать кучу URL-адресов, взяв результат API, один URL-адрес, который затем содержит URL-адрес следующей страницы результатов.
var options = { method: 'GET',
url: 'http://staticURL',
headers: { authorization: 'OAuth realTokenWouldBeHere', Accept: 'application/json' } };
var getJson = new Promise(function(resolve, reject) {
request(options, function(err, response, body) {
if(err) reject(err);
else {
resolve(JSON.parse(body));
}
});
});
getJson.then(function(result) {
console.log(result.Items); // "Stuff worked!"
}, function(err) {
console.log(err); // Error: "It broke"
});
Большое спасибо. Я думал о том, чтобы поместить функции в функцию, но не был уверен, что это нужно было объявить до того, как была определена функция. То, что вы делаете здесь, работает с одним изменением, которое было моей первоначальной проблемой. У меня было глупо два правильных фигурных скобки во второй, чтобы последняя строка моей функции, и именно поэтому ее не узнавали. Когда я изменил его на}); он работал при использовании вашего вызова. еще раз спасибо – DAB