私はブラウザで提供されている約束を覚えています。応答の引数が紛失している
validate("http://fhir3.healthintersections.com.au/open", decode(leftFhirView.getValue()))
.then(function(response) {
console.log("It worked! '", response, "'");
}, function(error) {
console.error("Failed validation!", error.stack);
});
は、私が実行したときに私が取得デバッグ出力です:私はそれを利用する方法
/* uploads a resource to the given server and runs the callback function when done */
function upload(serverUrl, resource, successfulCallback, failCallback) {
console.log("upload successfulCallback: ", successfulCallback);
console.log("upload failCallback: ", failCallback);
\t var jqxhr = $.ajax({
\t \t url: serverUrl,
\t \t method: "POST",
\t \t type: "POST",
\t \t contentType: "application/json",
\t \t data: encode(resource),
\t \t headers: {
Accept: "application/json; charset=utf-8",
Prefer: "return=minimal"
}
\t }).done(function() {
console.log("Upload done, jqxhr: ", jqxhr);
\t \t successfulCallback(jqxhr);
\t }).fail(function(err) {
\t \t console.log("upload failed: " + err.responseText);
\t \t failCallback(jqxhr, err);
\t });
}
function validate(endpoint, resource) {
var parameters = {
"resourceType": "Parameters",
"parameter": [{
"name": "resource",
"resource": resource
}]
};
return new Promise(function (resolve, reject) {
console.log("Made new promise, resolve function is: ", resolve);
console.log("Made new promise, reject function is: ", reject);
upload(endpoint + '/' + resource.resourceType + "/$validate", parameters, resolve, reject);
});
}
そして、これは次のようになります。これは私のコードです
main.js:45 Made new promise, resolve function is: u() { [native code] }
main.js:46 Made new promise, reject function is: v() { [native code] }
main.js:14 upload successfulCallback: u() { [native code] }
main.js:15 upload failCallback: v() { [native code] }
main.js:27 Upload done, jqxhr: Object {readyState: 4, responseText: "", <snip>
main.js:196 It worked! ' '
あなたが確認できるように、successfulCallback(jqxhr)と応答関数の間のどこかに、my jqxhrは2つのスペースに変わります。何が起こっている?
実際には2つのスペースにはならず、空の文字列になります.2つのスペースはconsole.logによってそこに置かれます。レスポンスのタイプを確認するために 'typeof response'を試してください。' responseText 'は空文字列ですが、コードは引き続き27行目に記録されたjqxhrオブジェクトに解決する必要があります –
' 'Promise'を' upload'の中に作成し、そこから 'return'を作成する必要があります。コールバックパラメータをまったく処理する必要があります。 – Bergi