亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

創建新的 Promise 而不是使用 then() JS

創建新的 Promise 而不是使用 then() JS

白衣染霜花 2023-11-11 16:10:49
我將 Nexus 用于數據庫目的,但我有一個通常也適用于 JS/TS 的問題。knex('cars').insert(cars).then(() => console.log("data inserted"))    .catch((err) => { console.log(err); throw err })    .finally(() => {        knex.destroy();    });如何將上述內容創建為新的 Promise 并拒絕或解決,如下所示byID(id: string): Promise<TEntity> {    return new Promise((resolve, reject) => {      const result = pg(cars)      .where({ 'id': id })      //   .andWhere('age', '<', 18);        .first();        if (!result)            return reject(new ModelNotFoundError('LMAO user not found'));         resolve(result)    })  }
查看完整描述

2 回答

?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

無需將 knex 查詢包裝到 Promise 構造函數。您可能正在嘗試寫這樣的東西:


byID(id: string): Promise<TEntity> {

    return pg(cars).where({ 'id': id }).first()

        .then(result => {

          if (!result) {

            throw new ModelNotFoundError('LMAO user not found')); 

          }

          return result;

        });

     })

  }


查看完整回答
反對 回復 2023-11-11
?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

不確定這是否是您所要求的,但您可以利用異步/等待。


const result = await new Promise(async (resolve, reject) => {

  try {

    await knex('cars').insert(cars);

    console.log("data inserted");

  } catch (err) {

    console.log(err);

    reject(err);

  } finally {

    knex.destroy();

  }

  resolve();

})

你不需要“等待”這個承諾,你也可以在那時“等待”它。我想要表達的要點是,您可以使 Promise 中的函數異步。


查看完整回答
反對 回復 2023-11-11
  • 2 回答
  • 0 關注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號