私は、約束事の概念だけでなく、一般的なJavaScriptにも慣れています。私はNode.jsに結果を約束するURLを渡すことができる関数を書くことを試みています。return new Promise()がNode.jsで動作しない
私は2つの方法でプログラムしました。最初の関数は機能しません。関数にURLを渡すことができます。 URLが静的に定義されている2番目のメソッドが機能します。コンパイラーは何らかの理由で私が理解できない関数だとは思わないので、最初の関数は機能しません、なぜですか?
機能getJson
、関数としてノードによって解釈されないようTHIS WAYは動作しません:
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"
});
THIS WAYが作業を行い、私はBACKコンソールに項目の配列を取得します。これの欠点は、使用されるURLが静的であることです。私がしようとしていることのポイントは、APIの結果を取得することによって一連のURLを連鎖させることです.1つのURL呼び出しには結果のNextPageの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"
});
ありがとうございます。私は関数内にオプションを置くことを考えていましたが、関数が定義される前に宣言する必要があるかどうかは不明でした。あなたがここに置いたものは、私の元の問題だった一つの変更で動作します。私は愚かに2つ目の右中括弧を持っていたので、それは認識されていなかったのです。私はそれを}に変更しました。それはあなたの電話を使用するとき働いた。再度、感謝します – DAB