繁体   English   中英

将 Javascript Promise 放入函数中

[英]Put Javascript Promise into Functions

我有两个承诺要通过 promise.all 解决:

var mictest1 = new Promise((resolve, reject) => {
  resolve(true);
});
var mictest2 = new Promise((resolve, reject) => {
  resolve(true);
});

Promise.all([mictest1, mictest2]).then(data => {
  console.log("test passed: " + data);
})

我想将承诺mictest1mictest2放入一个名为mictest()的函数中,以便它执行以下操作:

mictest();

Promise.all([mictest1, mictest2]).then(data => {
  console.log("test passed: " + data);
})

这样我就可以随意调用函数了,当promise变得复杂的时候,我就没有promise.all前面的promise.all文字了

也许您正在寻找mictest函数来返回Promise.all

 const mictest = () => { var mictest1 = new Promise((resolve, reject) => { resolve(true); }); var mictest2 = new Promise((resolve, reject) => { resolve(true); }); return Promise.all([mictest1, mictest2]); }; mictest().then((data) => { console.log('test passed:', data); });

我认为您正在寻找一个返回承诺的函数:

function mictest() {
  return new Promise((resolve, reject) => {
    resolve(true);
  });
}

你会像这样使用它

var mictest1 = mictest();
var mictest2 = mictest();
Promise.all([mictest1, mictest2]).then(data => {
  console.log("test passed: " + data);
})

或者干脆

Promise.all([mictest(), mictest()]).then(data => {
  console.log("test passed: " + data);
})

不像你想象的那样,但你可以非常接近:

let promises = mictest();

Promise.all(promises).then(data => {
  console.log("test passed: " + data);
})

这只是改变了你想象中的代码的两行。 实现很简单:

function mictest () {
  return [
    new Promise((resolve, reject) => {
      resolve(true);
    }),
    new Promise((resolve, reject) => {
      resolve(true);
    })
  ]
}

承诺是一个值,就像字符串、数字、数组等。你可以把它当作任何值来对待。 它恰好是一个具有 .then .then()方法并且是可等待的对象

注意:实际上,任何带有 .then .then()方法的对象都是可等待的,即使是您自己自定义创建的非承诺对象(实际上,任何带有.then()方法的对象都是承诺,即使它不是承诺)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM