两个承诺,然后为其中任何一个单独承诺



我有一个函数接受一个输入,根据该输入,它将调用我想要的两个函数中的一个(都返回一个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);
});

函数selectPhotopickPhoto都返回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'))

我不知道你是如何解决你的承诺的,但你明白了,只要这两个承诺中的任何一个解决了,他们就会称之为";"解决";这将触发容器的";那么";。

希望这是你想要的。

相关内容

最新更新