链接一系列的承诺

时间:2017-08-07 17:21:32

标签: javascript

我需要执行一系列' promisified'顺序功能(我的意思是同步,因为每一个都需要前一个的结果)。 此代码打印bar1bar0,而我期望bar0bar1

function _setTime(str) {
    return new Promise(function(resolve, reject) {
      setTimeout(function() {
        resolve(`bar${str} `);
      }, 1);
    });
}
_setTime("0")
    .then(function(str) {
        return _setTime("1"+str)
  })
  .then(function(str) {
        console.log(str)
  })

2 个答案:

答案 0 :(得分:5)

代码运行正常并且正在“同步”处理......你只是在调用函数时遇到错误:

第一个setTime("0")“返回”"bar0"

然后,您致电setTime("1" + "bar0"),其中“返回”"bar" + "1bar0"

您的新字符串会被添加到其中。

答案 1 :(得分:2)

解决方法:

 _setTime("0").then(function(str) {
    return _setTime("1").then(res=>str+res)
 })
.then(function(str) {
    console.log(str)
})