调用的方法即使成功完成也返回未定义

时间:2019-08-27 10:14:57

标签: javascript react-native realm

我正在调用一个方法(在下面的“调用方法”中进行描述)以写入并更新到我的Realm数据库中(在下面的“接收和返回-方法addTaskToGroup”中进行描述)。

但是,即使控制台成功返回,addTaskToGroup始终返回未定义的值。

我尝试在下面的位置添加async-await,但没有成功。

调用方法:

let latestGroup = await addTaskToGroup(data, id);
console.log("latest group: ", latestGroup);

接收并返回

export const addTaskToGroup = async (task, groupId) => {
    let group = await getGroup(groupId); //gets group from realm
    realm.write(() => {
          group.tasks.push(task);
          console.log("group to be returned ", group)
          return group;
    })
}

“要返回的组”的组的控制台很好,但是latestGroup未定义。

2 个答案:

答案 0 :(得分:1)

您需要将回调包装到promise中并返回。

   export const addTaskToGroup = async (task, groupId) => {
    let group = await getGroup(groupId); //gets group from realm
    return new Promise((resolve) => {
        realm.write(() => {
            group.tasks.push(task);
            console.log("group to be returned ", group)
            return resolve(group);
        });
    });
   }

答案 1 :(得分:0)

此箭头功能未返回任何值

 export const addTaskToGroup = async (task, groupId) => {
   ...
}

因此,为了修复该问题,您需要在该箭头功能上添加一个return语句

export const addTaskToGroup = async (task, groupId) => {
let group = await getGroup(groupId); //gets group from realm
realm.write(() => {
      group.tasks.push(task);
      console.log("group to be returned ", group)
      return group;
});
 return group;
}

如果执行了write(),则可以让代码类似于以下内容:

export const addTaskToGroup = async (task, groupId) => {
let group = await getGroup(groupId); //gets group from realm
realm.write(() => {
      group.tasks.push(task);
      console.log("group to be returned ", group)
      // return group;
   });
return group;
}