【发布时间】:2018-10-14 21:20:47
【问题描述】:
Async 函数自动返回 Promise - 我想知道是否有办法在函数内部获取这个 Promise 的这个实例 例如,如果我返回一个像这样的实际承诺:
const getSomePromise = () => {
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('success');
}, 1000);
})
promise.someProp = 'myProp';
return promise;
}
const promise = getSomePromise();
console.log(promise.someProp);
我想用纯异步函数实现同样的功能:
const sleep = ts => new Promise(resolve => setTimeout(resolve, ts));
const getSomePromise = async () => {
const p = await sleep(1000);
// some how access the instance of the promise from within the async function
// for example this['someProp'] = 'myProp';
// and return the all promise with this prop
return 'sucess';
}
const promise = getSomePromise();
console.log(promise.someProp);
我可以这样做吗?
谢谢
【问题讨论】:
-
不,这是不可能的。你想做什么,你想用
.prop做什么? -
向我的 promise 对象添加一些标志 - 可以说可取消,如下所述:github.com/fangj/make-cancelable/blob/master/index.js - 我只想用纯异步函数做同样的事情 - 不使用
new Promise -
看看
Fluture=> github.com/fluture-js/Fluture。它可以包装承诺,并且已经提供取消。 -
@Adidi 取消信号应该是输入(函数的参数),而不是输出的一部分。
标签: javascript promise async-await