我不知道如何让那个承诺像预期的那样运作。 我被困在这里一天。请帮助我完成任务。
我多次请求API时的一般情况。让我告诉您摘要。
.then((responseData) => {
console.log("Facebook Share Api Test")
console.log(responseData)
// After receiving result checking Platform
// If this is iOS we should let our result image links be fetched to encode it in Base64.
if(Platform.OS != 'android'){
let imgUrl
let photoInfo
let sharePhotoContent
let x = function (respData) {
return new Promise((resolve) => {
return respData.photos.map(async(value) => {
let iconURL = API.SERVER_URL + API.SERVICE_PORT + API.HEAD_ICON_RES_URL + value.photo_id + 'S'
let x = await Promise.all(RNFetchBlob
.fetch('GET', iconURL)
.then(res => res.data)
.then(resData => {
imgUrl = 'data:image/jpeg;base64,' + resData
console.log(imgUrl)
return imgUrl
})
.then(img => {
console.log(img)
let res = {
imageUrl: img
}
})
.catch(err => {
console.log(err)
}))
await console.log(x)
return x
})
})
}
x(responseData)
.then((res) => {
console.log('res', res)
sharePhotoContent = {
contentType: 'photo',
photos: res
}
ShareDialog.canShow(sharePhotoContent)
.then((canShow) => {
console.log(canShow)
if (canShow) {
return ShareDialog.show(sharePhotoContent);
}
})
.then((result) => {
console.log(result)
// if (result.isCancelled) {
// setTimeout(() => alert("Cancelled"), 100)
// }
setTimeout(() => alert("Success!"), 100)
})
.catch(error => {
console.log(error)
// setTimeout(() => alert('Share fail with error: ' + error), 100)
}
)
})
在第一个请求收到响应之后,一切都会进行。我想让我的代码表现为这种方式:
我的代码成功获取了base64主体,但是不想等待执行成功同步执行其他操作。当我的Promise开始RNFetch base64图像主体时,它使ShareDialog起作用,导致致命错误,因为图像尚未完全获取。
我感谢您的帮助。