问题描述:
var promise = client.getMap(config.map);
promise.then(function (rs) {
console.log(rs);
});
这个promise是个Promise的对象,里面包裹了我想要的值rs,但是貌似只能通过promise.then这种方式异步方式取值,我想定义一个变量去接收,然后在继续往下做。新手对promise还不是很熟
问题描述:
var promise = client.getMap(config.map);
promise.then(function (rs) {
console.log(rs);
});
这个promise是个Promise的对象,里面包裹了我想要的值rs,但是貌似只能通过promise.then这种方式异步方式取值,我想定义一个变量去接收,然后在继续往下做。新手对promise还不是很熟
如果你promise都不熟悉,就别整ES6的async/await了,会更晕的。
如果你不熟悉promise,你把then当成callback来用就好了(其实promise挺容易学的)
var value;
function cb(rs){
value = rs;
console.log(value);
}
function onerr(err){
console.error(err);
}
client.getMap(config.map).then(cb,onerr);
首先我们必须明确,Promise 并没有创建新语法,也没有改变运行环境,所以指望绕过 .then( func (rs) {} )
去取值是不可能的。
这里你有两个选择。
直接把你后续的处理放在 .then()
里面
把 promise
传出去,或者记录下来,在你希望做下一步的地方再调用
另外,说到 Async/Await,它也要使用 Promise 的,await 后面必须跟一个返回 Promise 的运算,所以完全不懂 Promise 也是不行的。
毛遂自荐一下我在 SF 做的视频讲堂:Promise 的 N 种用法 基本上可以一站式解决你关于 Promise 的各种问题。
5 回答3.7k 阅读✓ 已解决
7 回答10.1k 阅读
3 回答2.4k 阅读✓ 已解决
2 回答4.2k 阅读✓ 已解决
3 回答8k 阅读
5 回答1.4k 阅读✓ 已解决
5 回答1.8k 阅读✓ 已解决
你想用promise,就得接着用then/catch,或者使用async/await,就把异步直接转换成同步操作。
async/await学习参考阮一峰老师 => http://es6.ruanyifeng.com/#do...
soonfy