javascript - 如何创建一个函数返回一个在内部承诺解决后解决的承诺
问题描述
我正在尝试创建一个包装函数,该函数返回一个 Promise 对象,该对象将在内部 Promise 解析后解析。基本上,是这样的:
function wrapper() {
return new Promise((resolve, reject) => {
MyApi.asyncCall()
.then(data => {
// do this first, then resolve outer promise
resolve();
})
.catch(e => {
reject();
});
});
}
我需要这样做的原因是我有一个接受承诺参数的接口,然后在承诺解决后触发一个动作。我需要进行异步调用,然后对响应做一些事情,然后触发接口。
编辑 目的说明:在解决外部承诺之前,我需要使用内部承诺的响应执行操作。该接口接受一个未解析的 Promise 对象,然后在它被解析时挂载一个组件。如果我通过内部承诺,它将在执行数据响应的操作之前挂载。
解决方案
基本上——你做对了。当你需要时,你会解决\拒绝承诺。
但是你可以很容易地做到这一点——只需返回原始承诺:
function wrapper() {
return MyApi.asyncCall()
}
所以你返回的承诺,当 MyApi.asyncCall 解决或拒绝时解决或拒绝。
如果你需要在内部做一些工作人员,你可以在这个承诺中做:
function wrapper() {
return MyApi.asyncCall()
.then((data) => {
doSomeOtherStaff(data)
return data
})
}
请注意,如果您需要外部数据 - 您必须从内部的 then 回调中返回它。
推荐阅读
- ios - ios/index/DataStore 的使用
- laravel - laravel 保持表单数据在按下按钮后不刷新
- apache-spark - 如果 RDD 变大,Spark 将如何反应?
- c++ - Simple Noob C++ Input/Output Question: Code Error
- r - Multiply column by every other column
- android - longClick 上的振动/声音反馈
- r - 无法在 R 中安装 devtools
- winapi - What does "Windows 10 Team" option mean when submitting a UWP app to Windows 10 Store?
- google-apps-script - onFormSubmit 运行多次
- python - 命名 Python 类类似于保留关键字 `Class`