我需要执行一系列' 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)
})
答案 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)
})