如何解决两个许诺,然后为其中一个许诺
我有一个接受输入的函数,根据该输入,它将调用我想要的两个函数之一(都返回一个Promise),然后无论它们发生了什么,都调用相同的.then()
。>
我找到了Promise.any()
,但是那并不能完全满足我的要求。
对于好奇的人:
我正在使用react-native
应用程序,想要打开相机或图库,然后在then()
中处理照片。
我该怎么做?
解决方法
function myFunction(input) {
const promise = input === X ? callOne() : callTwo();
return promise.then(handleEitherFunction);
}
,
我可能缺少一些东西,但我相信您可以兑现诺言:
new Promise(fulfill => {
if( ... someCondition ...){
fulfill(selectPhoto());
}
else {
fulfill(pickPhoto());
}
}).then(selectedPhoto => {
console.log(selectedPhoto);
});
函数selectPhoto
和pickPhoto
都返回诺言。 Promise将链接,并且console.log
函数仅在实现传递给实现的Promise时被调用。
您可以传递包含Promise的resolve函数,并像这样在内部的任何Promise中调用它。
const OneForTwo = new Promise( (resolve,reject) => {
const openCamera = new Promise(() => { console.log('your camera code') }).then( resolve )
const openGallery = new Promise(() => { console.log('your gallery code') }).then( resolve )
}).then( value => console.log('i got resolved by any of those promises'))
我不知道您如何解决您的诺言,但是您就明白了,只要这两个诺言中的任何一个兑现,它们就会调用容器的“ resolve”,从而触发“ then”。
希望这是您想要的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。