将promise分配给变量,而不是结果或执行的Promise?

时间:2019-04-29 11:32:27

标签: javascript promise es6-promise

假设我们有一个承诺:

const aPromise = new Promise(()=>{console.log('promise executed');}) 

只需分配此Promise,执行它,并在控制台上显示:

promise executed

当我调用aPromise时,它没有登录到控制台,console.log(aPromise)的结果表明已解决。

我的问题是,如何在不执行/解决的情况下分配一个Promise,所以我可以多次调用它?

3 个答案:

答案 0 :(得分:3)

您可以将其包装在这样的函数中:

const getPromise = () => new Promise((resolve,reject) => {
    console.log('Promise executed')
    resolve()
})

现在您可以多次调用它:

getPromise().then(() => { // do something })

答案 1 :(得分:1)

您可以简单地从函数返回一个承诺并将其分配给变量

function returnpromise(val) {
  return new Promise((resolve, reject) => {
    if (val > 5) {
      resolve("resolved hello"); // fulfilled
    }
    else {
      reject("rejected"); // rejected
    }
  });
}

let prom=returnpromise(6);// assign promise to variable prom
console.log(prom) // returns Promise { 'resolved' }

// to get the data use it many times

prom.then(a=>console.log(a));

答案 2 :(得分:-1)

Promise()中没有输入参数:

# Read function
def get_df2(file):
    mydata2 = []
    for chunk in pd.read_csv(file,chunksize=500000,header = None,sep='\t'):
        mydata2.append(chunk)
    user_data = pd.concat(mydata2,axis=0)
    names2=['user_id','age','gender','area','status']
    user_data.columns = names2
    return user_data

# read
user_data_path = 'a_url'
user_data = get_df2(user_data_path)
user_data.head()

在Promise(参数)中带有输入参数

function Promise() {
  console.log('promise executed');
}

const aPromise = new Promise();

注意:在Javascript中未使用运算符“ =>”,在C / C ++中使用了运算符“ =>”,请参见此处的更多信息:

https://www.w3schools.com/jsref/jsref_operators.asp