如何用括号之间的多个值解析JS Promises?

时间:2019-02-05 10:33:54

标签: javascript reactjs promise

在浏览器的控制台中,我希望获得3个连续结果,这些结果是:狮子老虎。按此顺序。我得到的只是

new Promise((resolve, reject) => {
    return reject(new Error('no bears'));
 setTimeout(() => {
         resolve('Bears', 'Lions', 'Tigers')
   }, 1000);
})

.then(quote => {
    console.log(quote);
})

2 个答案:

答案 0 :(得分:2)

实际上仅将resolve()的第一个参数传递给then处理程序。您可能想用数组代替

resolve(['Bears', 'Lions', 'Tigers'])

此外,在您进行return reject()呼叫之前,您有一个setTimeout,因此您的setTimeout代码无法访问,并且永远不会发生。

答案 1 :(得分:0)

您只能发送一个值,请考虑将其作为数组发送并在接收者处展开

new Promise((resolve, reject) => {
    return reject(new Error('no bears'));
    setTimeout(() => {
         resolve(['Bears', 'Lions', 'Tigers'])
   }, 1000);
})
.then(quote => {
    console.log(...quote); // spreads to 3 items
})