我对节点js的承诺有一些问题.这是我的示例代码:
var p1 = new Promise(function(resolve, reject) {
// my function here
});
p1.then(function(result){
// my result
});
Run Code Online (Sandbox Code Playgroud)
这段代码是可行的,但要从p1获取值,我必须使用.then方法,我的结果值可以在p1.then上访问.如何在没有的情况下访问p1值?
低于我的期望结果:
var p1 = new Promise(function(resolve, reject) {
// my function here
});
var abc = NextFunction(p1);
Run Code Online (Sandbox Code Playgroud)
因为p1值将用于外部p1变量的下一个代码,怎么做.谢谢
Ale*_*exD 14
p1是a Promise,您必须等待它评估并使用Promise所需的值.
你可以在这里阅读:http://www.html5rocks.com/en/tutorials/es6/promises/
虽然result仅在已解析的函数内可用,但您可以使用简单变量对其进行扩展
var res;
p1.then(function(result){
res = result; // Now you can use res everywhere
});
Run Code Online (Sandbox Code Playgroud)
但是要注意res只有在promise解决后才能使用,如果依赖于该值,请从下面调用下一个函数.then:
var res;
p1.then(function(result){
var abc = NextFunction(result);
});
Run Code Online (Sandbox Code Playgroud)
您可以在承诺解决或拒绝后使用 await。
function resolveAfter2Seconds(x) {
return new Promise(resolve => {
setTimeout(() => {
resolve(x);
}, 2000);
});
}
async function f1() {
var x = await resolveAfter2Seconds(10);
console.log(x); // 10
}
f1();
Run Code Online (Sandbox Code Playgroud)
请注意await表达式必须在async函数内部。
| 归档时间: |
|
| 查看次数: |
20244 次 |
| 最近记录: |