多次延迟调用承诺 Bluebird.js
Calling a promise multiple times with delay Bluebird.js
现在我有
getUserInfo = (data) => {
console.log('Getting user info')
return new Promise((resolve, reject) => {
if (data === 1)
return resolve('Hello World')
resolve(getUserInfo(1))
})
}
getUserInfo().then(data => console.log(data))
这将 console.log
Getting user info
Getting user info
Hello World
这正是我想要的,多次调用 promise 然后 resolve。
但是我想在 promise 之间添加一个延迟,所以我想要:
Getting user Info
Wait 1 second
Getting user Info
Hello World
我想使用 bluebird 的 Promise.delay。关于如何去的任何提示?
我试过了
getUserInfo = (data) => {
console.log('Getting user info')
return new Promise.delay(500,(resolve, reject) => {
if (data === 1)
return resolve('Hello World')
resolve(getUserInfo(1))
})
}
但是作为 promise 的 resolve 数据,这个 returns 函数:
Getting user info
[Function]
提前致谢!
延迟是一个承诺,而不是一个承诺构造函数。所以你可以像使用任何其他承诺一样使用 Promise.delay..
下面可能是您之后的内容 ->
const getUserInfo = (data) => {
console.log('Getting user info')
return new Promise((resolve, reject) => {
if (data === 1) {
return resolve('Hello World')
}
return Promise.delay(500).then(
function () { resolve(getUserInfo(1)); }
);
})
}
getUserInfo().then(data => console.log(data))
<script src="https://cdnjs.cloudflare.com/ajax/libs/bluebird/3.5.1/bluebird.min.js"></script>
使用新的 async / await,可以使这样的事情变得容易得多。
const getUserInfo = async (data) => {
console.log('Getting user info')
if (data === 1) return "hello World";
await Promise.delay(500);
return getUserInfo(1);
}
getUserInfo().then(data => console.log(data))
<script src="https://cdnjs.cloudflare.com/ajax/libs/bluebird/3.5.1/bluebird.min.js"></script>
现在我有
getUserInfo = (data) => {
console.log('Getting user info')
return new Promise((resolve, reject) => {
if (data === 1)
return resolve('Hello World')
resolve(getUserInfo(1))
})
}
getUserInfo().then(data => console.log(data))
这将 console.log
Getting user info
Getting user info
Hello World
这正是我想要的,多次调用 promise 然后 resolve。
但是我想在 promise 之间添加一个延迟,所以我想要:
Getting user Info
Wait 1 second
Getting user Info
Hello World
我想使用 bluebird 的 Promise.delay。关于如何去的任何提示?
我试过了
getUserInfo = (data) => {
console.log('Getting user info')
return new Promise.delay(500,(resolve, reject) => {
if (data === 1)
return resolve('Hello World')
resolve(getUserInfo(1))
})
}
但是作为 promise 的 resolve 数据,这个 returns 函数:
Getting user info
[Function]
提前致谢!
延迟是一个承诺,而不是一个承诺构造函数。所以你可以像使用任何其他承诺一样使用 Promise.delay..
下面可能是您之后的内容 ->
const getUserInfo = (data) => {
console.log('Getting user info')
return new Promise((resolve, reject) => {
if (data === 1) {
return resolve('Hello World')
}
return Promise.delay(500).then(
function () { resolve(getUserInfo(1)); }
);
})
}
getUserInfo().then(data => console.log(data))
<script src="https://cdnjs.cloudflare.com/ajax/libs/bluebird/3.5.1/bluebird.min.js"></script>
使用新的 async / await,可以使这样的事情变得容易得多。
const getUserInfo = async (data) => {
console.log('Getting user info')
if (data === 1) return "hello World";
await Promise.delay(500);
return getUserInfo(1);
}
getUserInfo().then(data => console.log(data))
<script src="https://cdnjs.cloudflare.com/ajax/libs/bluebird/3.5.1/bluebird.min.js"></script>