首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Javascript Promise -在解析之前等待.then()执行?

Javascript Promise -在解析之前等待.then()执行?
EN

Stack Overflow用户
提问于 2018-07-11 01:47:49
回答 3查看 285关注 0票数 0

所以,我们有这样的东西:

代码语言:javascript
复制
function thePromise(){
 var thePromise = new Promise(function(){
        var data = 'foo';
        console.log(data);
        resolve();
    });
 return thePromise;
}

thePromise().then( function(){
console.log('bar');
});
console.log('foobar');

人们期望输出的顺序是foo, bar, foobar,但是它总是以foo, foobar, bar结束。

除了使用setTimeout()之外,还有什么方法可以确保在执行下一行代码之前完成.then()中的代码吗?我正在尝试做一些数据库操作和与远程服务器同步的事情,所以使用setTimeout()是一个有风险的提议,因为它可能需要不确定的时间来解决。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-11 01:53:14

简单地链接你的承诺:

代码语言:javascript
复制
var promise = new Promise(function(resolve, reject){
    resolve(console.log('foo'));
});
var fctn = function(){
   console.log('bar');
}

promise.then(fctn).then(function(){
  console.log('foobar');
});

票数 1
EN

Stack Overflow用户

发布于 2018-07-11 03:40:33

然后()返回一个Promise,所以你可以链接:

代码语言:javascript
复制
thePromise().then( function(){
   console.log('bar');
})
.then(function() { 
    console.log('foobar'); 
});
票数 0
EN

Stack Overflow用户

发布于 2018-07-11 02:01:48

你可以这样做

代码语言:javascript
复制
(fctn).then((response) => {
  //Your Logic
}

angular docs中所述(如果您使用的是angular)

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51271363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档