从函数执行承诺的顺序

时间:2017-03-07 21:01:59

标签: javascript promise

我必须在函数内部执行Fetch promise返回,以便在其他人处理此数据之前转换某些数据。 所以我创建了这个代码(简化只是为了表明这个想法):

function test() {

  return  new Promise(function (resolve, reject) {
    // Fetch('www.google.com')
    setTimeout(resolve, 1000);
  }).then(function () {
    // convert data, etc
    console.log(1);
  });
}
// after conversion, handle it to someone else
test().then(console.log(2));

运行它,我认为控制台会显示:1 2但它一直显示2 1.还有其他方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:1)

就像使用console.log(1)一样,您需要将第二个调用包装在函数中,然后再将其作为回调传递给then

test().then(function() {
    console.log(2);
});

然后它会按预期显示1 2