[英]JS promise not resolving as expected
以下兩個函數交換承諾解析數據。 第二個函數應該將對象返回到第一個函數的內部Promise,但事實並非如此。
let functionA = function (stuff) {
var responseToGet;
return fetch(someURL
{
method: 'GET',
headers: {headers},
})
.then((resp) => {
responseToGet = resp;
return functionB(responseToGet)
})
.then((respFromB) => {
console.log('respFromB', respFromB); // WHY IS THIS UNDEFINED INSTEAD OF TRUE/FALSE ?
if (respFromB.status)
return null;
else
return respFromB.jsonObj;
})
.catch((error) => {
console.log(error);
});}
let functionB = function(response)
{
response.json().then((r2) => {
if (something)
return Promise.resolve({status: true, jsonObj: null});
else
return Promise.resolve({status: false, jsonObj: r2});
})
.done();}
您無需調用“完成”功能。 只需從functionB返回一個承諾
例:
var functionA = function (stuff) {
var responseToGet;
return fetch("http://httpbin.org/gzip",
{
method: 'GET',
headers: {}
})
.then(function (resp) {
responseToGet = resp;
return functionB(responseToGet)
}).then(function (respFromB) {
console.log('respFromB', respFromB); // WHY IS THIS UNDEFINED INSTEAD OF TRUE/FALSE ?
if (respFromB.status)
return null;
else
return respFromB.jsonObj;
}).catch(function (error) {
console.log(error);
});
}
var functionB = function (response) {
var promise = response.json().then(function (r2) {
if (r2)
return Promise.resolve({status: true, jsonObj: null});
else
return Promise.resolve({status: false, jsonObj: r2});
});
return promise;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.