我有一个函数接受一个输入,根据该输入,它将调用我想要的两个函数中的一个(都返回一个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。promise将连锁,并且只有在传递给履行的promise实现后才会调用console.log
函数。
您可以传递包含Promise的解析函数,并在其中的任何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'))
我不知道你是如何解决你的承诺的,但你明白了,只要这两个承诺中的任何一个解决了,他们就会称之为";"解决";这将触发容器的";那么";。
希望这是你想要的。