tra*_*tam 3 javascript function promise
说我有两个功能:
function f1() {
return new Promise<any>((resolve, reject) => {
resolve(true);
});
}
function f2() {
}
Run Code Online (Sandbox Code Playgroud)
我怎么知道是否f1
会返回Promise
并f2
不会呢?
gue*_*314 13
调用该函数,使用 instanceof
let possiblePromise = f1();
let isPromise = possiblePromise instanceof Promise;
Run Code Online (Sandbox Code Playgroud)
所以这只是关于规范化输出.然后运行它Promise.resolve()
和co.
var possiblePromise = f1();
var certainPromise = Promise.resolve(possiblePromise).then(...);
Run Code Online (Sandbox Code Playgroud)
要么
var possiblePromises = [f1(), f2()];
Promise.all(possiblePromises).then(values => ...);
Run Code Online (Sandbox Code Playgroud)
但是你需要对这些函数返回的基本概念有所了解.例如:两个例子都会失败
function f3(){
return [somePromise, someOtherPromise];
}
var arrayOfPromisesOrValues = f3();
//here you'll still deal with an Array of Promises in then();
Promise.resolve(arrayOfPromisesOrValues).then(console.log);
//neither does this one recognize the nested Promises
Promise.all([ f1(), f2(), f3() ]).then(console.log);
//only these will do:
Promise.all(f3()).then(console.log);
Promise.all([ f1(), f2(), Promise.all(f3()) ]).then(console.log);
Run Code Online (Sandbox Code Playgroud)
您需要知道f3
返回一个Promises或值数组并处理它.就像你需要知道f1
并f2
返回一个值或一个值的Promise.
结论:您需要具备函数返回的基本知识,以便能够通过正确的函数运行结果来解析promise.