两个许诺,然后为其中一个许诺

问题描述

我有一个接受输入的函数,根据该输入,它将调用我想要的两个函数之一(都返回一个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将链接,并且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”。

希望这是您想要的。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...