接收异步返回值
function test() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("hello world")
}, 2000)
})
}
test().then(res => {
console.log(res); // hello
})
多次调用
多次调用拿到的都是新的promise实例的返回值
function test() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("hello world")
}, 2000)
})
}
test().then(res => {
console.log(res); // hello world
})
test().then(res => {
console.log(res); // // hello world
})
链式调用
本身具有返回值
他本身的返回值为promise对象,他会接收回调函数返回的值,然后把它包装成promise实例返回,所以他可以链式调用
test().then(res => {
console.log(res); // hello world
}).then(res => {
console.log(res); // undefined
return "hello js"
}).then(res => {
console.log(res); // hello js
})
返回一个promise
test().then(res => {
console.log(res); // hello world
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("hello promise")
}, 2000)
})
}).then(res => {
console.log(res);// 打印完hello world 2s后,会打印 hello promise
})
返回一个对象,对象中有then
test().then(res => {
console.log(res); // hello world
return {
then(resolve, reject) {
resolve("hello then")
}
}
}).then(res => {
console.log(res); // hello then
})