使用ES6的Promise,一般把一个异步的函数,用Promise包一层:
var test = function(data){
return new Promise(function(resolve,reject){
try{
if(data.statue === "SUCCESS"){
resolve(data);
}else{
reject(data);
}
}catch(e){
reject(e)
}
})
}
但是我了解到,可以直接使用promise对象,可以不用它来包裹任何异步(或同步)过程:
var promise = new Promise(function(resolve,reject){
// ...
resolve(999);
})
promise.then(function(value){
console.log(value); // 999
}).catch(function(error){
console.error(error);
})
请问这种直接使用的方式,主要用在什么场景下?
这个跟包装不保证没有关系的
比如你之前发一个网络请求,就是用 ajax
发一个异步回调,如果你需要把这个操作包装成一个行为稍后再调用,可能就封装在一个函数里,如果不需要,就是直接调用
这个跟上面两种情况一个道理
你说的直接使用的场景是这样?
var promise = new Promise(function(resolve,reject){
//空实现
})
里面是空实现?那我告诉你没有这种使用场景,因为这种用法永远也不会被resolve或者reject。 所以无意义
根据问题修正:
通常也不会按你的那种写法,太啰嗦。 简写是这样的
Promise
.resolve(999)
//链式可能
这种用法是因为,后面可能有一系列能被(或者需要被)链式调用的操作,他们也需要一个Promise作为起始点
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。